zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    Thrift全面介绍
    ZooKeeper全面介绍
    Redis全面介绍
    第三篇:彻底解决ssh.invoke_shell() 返回的中文问题
    第二篇:ssh.invoke_shell() 切换root出现的新问题
    第一篇:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc3 in position 0: invalid continuation byte
    pycharm安装 suds模块报错:AttributeError: module 'pip' has no attribute 'main'
    变量赋值理解--Pyton中让两个值互换的方法
    02 Django框架基础(APP的创建访问)
    01 Web框架介绍
  • 原文地址:https://www.cnblogs.com/Cheetah-yang/p/4883020.html
Copyright © 2011-2022 走看看