iOS_根据文字字数动态确定Label宽高

iOS7中用以下方法

- (CGSize)sizeWithAttributes:(NSDictionary *)attrs;

替代过时的iOS6中的- (CGSize)sizeWithFont:(UIFont
*)font 方法


    // iOS7_API_根据文字 字数动态确定Label宽高

    // 设置Label的字体 HelveticaNeue  Courier
    UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:24.0f];
    _nameLabel.font = fnt;
    // 根据字体得到NSString的尺寸
    CGSize size = [_nameLabel.text sizeWithAttributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil]];
    // 名字的H
    CGFloat nameH = size.height;
    // 名字的W
    CGFloat nameW = size.width;
    _nameLabel.frame = CGRectMake(0, 0, nameW,nameH);

iOS7中用以下方法boundingRectWithSize:options:attributes:context:替代过时的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法


// 4,根据正文内容多少,动态确定正文content的frame

    // 宽度W
    CGFloat contentW = self.bounds.size.width - _content.frame.origin.x - kMargin;
    // label的字体 HelveticaNeue  Courier
    UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:18.0f];
    _content.font = fnt;
    _content.numberOfLines = 0;
    _content.lineBreakMode = NSLineBreakByWordWrapping;
    // iOS7中用以下方法替代过时的iOS6中的sizeWithFont:constrainedToSize:lineBreakMode:方法
    CGRect tmpRect = [_content.text boundingRectWithSize:CGSizeMake(contentW, 1000) options:NSStringDrawingUsesLineFragmentOrigin attributes:[NSDictionary dictionaryWithObjectsAndKeys:fnt,NSFontAttributeName, nil] context:nil];

    // 高度H
    CGFloat contentH = tmpRect.size.height;
    NSLog(@"调整后的显示宽度:%f,显示高度:%f"contentW,contentH);
    _content.frame = CGRectMake(0, 0, contentW,contentH);


附:API文档参考

boundingRectWithSize:options:attributes:context:

Calculates and returns the bounding rect for the receiver drawn using the given options and display characteristics, within the specified rectangle in the current graphics context.

- (CGRect)boundingRectWithSize:(CGSize)size
options:(NSStringDrawingOptions)options
attributes:(NSDictionary
*)attributes context:(NSStringDrawingContext
*)context

Parameters

size

The size of the rectangle to draw in.

options

String drawing options.

attributes

A dictionary of text attributes to be applied to the string. These are the same attributes that can be applied to anNSAttributedString object, but in the case ofNSString objects, the attributes apply
to the entire string, rather than ranges within the string.

context

The string drawing context to use for the receiver, specifying minimum scale factor and tracking adjustments.

Return Value

The bounding rect for the receiver drawn using the given options and display characteristics. The rect origin returned from this method is the first glyph origin.

Discussion

To correctly draw and size multi-line text, pass NSStringDrawingUsesLineFragmentOrigin in the options parameter.

This method returns fractional sizes (in the size component of the returnedCGRect);
to use a returned size to size views, you must raise its value to the nearest higher integer using theceil function.

This method returns the actual bounds of the glyphs in the string. Some of the glyphs (spaces, for example) are allowed to overlap the layout constraints specified by the size passed in, so in some cases the width value of the size component of
the returned CGRect can exceed the width value of the size parameter.

Availability

  • Available in iOS 7.0 and later.

See Also

  • – drawInRect:withAttributes:

Declared In

NSStringDrawing.h

iOS_根据文字字数动态确定Label宽高,布布扣,bubuko.com

时间: 2024-11-02 23:33:11

iOS_根据文字字数动态确定Label宽高的相关文章

iOS 根据文字字数动态确定Label宽高

iOS7中用以下方法 - (CGSize)sizeWithAttributes:(NSDictionary *)attrs; 替代过时的iOS6中的- (CGSize)sizeWithFont:(UIFont *)font 方法 // iOS7_API_根据文字 字数动态确定Label宽高 // 设置Label的字体 HelveticaNeue Courier UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" size:24.0f]

iOS根据文字字数动态确定Label宽高

我们有时候在写项目的时候,会碰到,意见反馈,还有其他地方,讲座活动细则等需要大篇展示的文本, 因为每次服务器返回的内容大小不一,所以需要动态的调整label的宽高: 在ios 6 的时候可以: -(void)creatLabel { //根据文字 字数动态确定label宽高 _nameLabel = [[UILabel alloc]init]; _nameLabel.frame = CGRectMake(100, 100, 100, 40); _nameLabel.backgroundColor

根据字符长度动态确定UIlabel宽高

iOS7中用以下方法 - (CGSize)sizeWithAttributes:(NSDictionary *)attrs; 替代过时的iOS6中的- (CGSize)sizeWithFont:(UIFont *)font 方法 1 // iOS7_API_根据文字 字数动态确定Label宽高 2 3 4 // 设置Label的字体 HelveticaNeue Courier 5 UIFont *fnt = [UIFont fontWithName:@"HelveticaNeue" s

写个js动态调整图片宽高 (原创)

<body style="TEXT-ALIGN: center;"> <div id="testID" style="background:red;MARGIN-RIGHT: auto; MARGIN-LEFT: auto; width:173;height:184"> <img src="http://e.hiphotos.baidu.com/image/pic/item/024f78f0f736afc3

微信小程序之动态获取元素宽高

我以前一直以为微信小程序不能动态获取view元素的宽高.但是自从看到: wx.createSelectorQuery() 这个api接口,以前的某些问题就能得到解决了... 那么,这个api接口怎么用呢? 首先,这个接口会返回一个对象实例. var obj=wx.createSelectorQuery(); 下面的就是返回的对象实例 obj 的所有内容. 返回的 obj 有五个方法: 1.  obj.in(component):没用过这个方法,多用于组件的选择器. 2.   obj.select

label 自适应宽 高

//初始化label    UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0,0,0,0)];    //设置自动行数与字符换行    [label setNumberOfLines:0];    // 测试字串    NSString *str = @"\n  一别之后 两地相悬 只说三四月 谁知五六年 七玄琴无心谈 八行书无可传 九连环从中断 十里长亭望眼欲穿 百思想 千系念 万般无奈把郎怨  \n  万言千语说不完 百

iOS 让UIButton根据文字内容自动计算宽高

Xcode自带的UIButton控件是没有办法根据文字内容计算自身的宽和高的,下面演示一下问题, 我用代码方式创建一个UIButton,并且设置了一些属性,下面看一下效果图 一切都是这么的美好,跟我们想要的一样啊,btn也跟着文字内容进行自身宽高的更改了啊!那我再设置多一点文字 怀着满怀激动的心情,再看一下效果图 哇哦,怎么变成这个样子了.文字内容都超出btn控件了,跟我们想象的不一样啊.这个问题该如何解决呢? 既然Xcode自带的UIButton类满足不了我们的需求.那么我们就自定义一个UIB

如何设置a标签的宽高,如何使a标签的文字垂直居中

通常情况下a标签是没有宽高的,设置 width 和 height 没有作用. 若要使用 width 和 height,需要把a标签转为块级元素,即:display:block|inline-block. 设置了宽高后,如何使文字居中呢? 设置 line-height 和 height 相等,则垂直居中.

动态获取手机屏幕宽高及动态设置控件宽高

1.获取手机屏幕宽高: DisplayMetrics dm = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(dm); int screenWidth = dm.widthPixels; int screenHeight = dm.heightPixels; 22.根据屏幕宽度为控件设置动态设置宽高: imageView.setImageResource(R.drawable.newscar); L