zoukankan      html  css  js  c++  java
  • iOS6 以上设置文本高度,行高(转)

    2013-12-09     我来说两句    来源:冻僵的企鹅'zone  
    收藏    我要投稿

    在iOS 7之前,常用下面这个方法计算文本高度sizeWithFont:constrainedToSize:lineBreakMode:(Deprecated in iOS 7.0)

    但是到了iOS 7 之后,这个方法就不建议使用了。提示用下面这个方法:

    boundingRectWithSize:options:attributes:context:(Available in iOS 7.0 and later.)

    可是这个方法是iOS 7 及其以后才能使用,我们现在的程序大部分都希望还能兼容iOS 6,甚至iOS 5。我们的程序只需要兼容iOS6,所以我希望有个方法能在iOS 6及其以上都能使用。

    NSAttributedString就有一个类似的方法:

    boundingRectWithSize:options:context:(Available in iOS 6.0 and later.)

    使用这个方法需要先将NSString转为NSAttributedString:

    -(NSMutableAttributedString *)attributedStringFromStingWithFont:(UIFont *)font
                                                    withLineSpacing:(CGFloat)lineSpacing
    {
        NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:self attributes:@{NSFontAttributeName:font}];
        
        NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
        [paragraphStyle setLineSpacing:lineSpacing];
        
        [attributedStr addAttribute:NSParagraphStyleAttributeName
                              value:paragraphStyle
                              range:NSMakeRange(0, [self length])];
        return attributedStr;
    }

    这里用到了类别,self就是调用方法的receiver。另外这里还可以设置文字的行间距。

    然后就是计算文本的大小:

    将这两个方法写在类别中,使用起来就很方便了:

    @interface NSString(extended)
    //计算文本的size
    -(CGSize)boundingRectWithSize:(CGSize)size
                     withTextFont:(UIFont *)font
                  withLineSpacing:(CGFloat)lineSpacing;
    //sting转AttributedString
    -(NSMutableAttributedString *)attributedStringFromStingWithFont:(UIFont *)font
                                                    withLineSpacing:(CGFloat)lineSpacing;
    @end
  • 相关阅读:
    poj 2528 Mayor's posters (线段树+离散化)
    poj 1201 Intervals (差分约束)
    hdu 4109 Instrction Arrangement (差分约束)
    poj 1195 Mobile phones (二维 树状数组)
    poj 2983 Is the Information Reliable? (差分约束)
    树状数组 讲解
    poj 2828 Buy Tickets (线段树)
    hdu 1166 敌兵布阵 (树状数组)
    Ubuntu网络配置
    Button控制窗体变量(开关控制灯的状态)
  • 原文地址:https://www.cnblogs.com/lingzeng/p/3863596.html
Copyright © 2011-2022 走看看