IOS中自定义段落样式及大小的计算

首先设置段落样式用到了这个类
NSMutableParagraphStyle以及NSAttributedString的NSParagraphStyleAttributeName属性

创建一个段落风格 为其填充一些所需属性

    //创建
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    //断行模式
    [paragraphStyle setLineBreakMode:NSLineBreakByWordWrapping];
    //书写方向
    [paragraphStyle setBaseWritingDirection:NSWritingDirectionLeftToRight];
    //字间距
    [paragraphStyle setLineSpacing:5.0f];
    //行间距倍数
    [paragraphStyle setLineHeightMultiple:1.5f];
    //对齐方式
    [paragraphStyle setAlignment:NSTextAlignmentCenter];
    //首行缩进
    [paragraphStyle setFirstLineHeadIndent:20.0f];
    //段落前端缩进 (不包括首行)
    [paragraphStyle setHeadIndent:10.0f];
    //段落尾端缩进 (注意 这里的尾端缩进的参数并非是缩进的数值,而是显示的总长度)
    [paragraphStyle setTailIndent:Screen_Width - margin * 2 - 10];
    //最小行高
    [paragraphStyle setMinimumLineHeight:20.0f];
    //最大行高
    [paragraphStyle setMaximumLineHeight:30.0f];
    //段间距
    [paragraphStyle setParagraphSpacing:10.0f];
    //连字符属性(范围在0-1之间)
    [paragraphStyle setHyphenationFactor:0.3];

然后将此风格赋值至某段字符串的NSParagraphStyleAttributeName属性内

    UILabel *label = [[UILabel alloc] initWithFrame:CGRectZero];
    label.numberOfLines = 0;
    label.attributedText = [[NSAttributedString alloc] initWithString:showText attributes:@{NSParagraphStyleAttributeName:paragraphStyle}];

至此就完成了段落样式的赋值

接下来用boundingRectWithSize方法 填充相同的段落样式来计算此段文字的宽度或高度 如下

float max = 8000;

    CGRect rect = [string boundingRectWithSize:CGSizeMake(width, max)//限制最大的宽度和高度
                                       options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesFontLeading  |NSStringDrawingUsesLineFragmentOrigin//采用换行模式
                                    attributes:@{NSFontAttributeName: font,NSParagraphStyleAttributeName:paragraphStyle}//传人的字体字典
                                       context:nil];
    CGRect rect = [string boundingRectWithSize:CGSizeMake(max, height)//限制最大的宽度和高度
                                       options:NSStringDrawingTruncatesLastVisibleLine | NSStringDrawingUsesFontLeading  |NSStringDrawingUsesLineFragmentOrigin//采用换行模式
                                    attributes:@{NSFontAttributeName: font,NSParagraphStyleAttributeName:paragraphStyle}//传人的字体字典
                                       context:nil];

取得rect.size 就是所需的此段落样式下文字的宽度或高度

你可能感兴趣的:(ios,大小计算,paragraph,段落样式)