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
  • 相关阅读:
    第七章 第一月:开始 第二周:链接建设(2)
    基础篇 第四节 项目进度计划编辑 之 日历
    VSS2005 使用说明
    删除存储过程
    基础篇 第四节 项目进度计划编辑 之 任务关联性设定
    转载: input 的css技巧
    js: js判断回车键
    一个简单邮件发送类
    转载: php发送邮件原理
    css 小经验: 重构css的优化与技巧
  • 原文地址:https://www.cnblogs.com/lingzeng/p/3863596.html
Copyright © 2011-2022 走看看