iOS_根據文字字數動態確定Label寬高

來源:互聯網
上載者:User

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



聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.