UILabel的两段对齐
主要代码如下:
- (void)labelJustingAlignment {
NSMutableAttributedString *mAttributeStr = [[NSMutableAttributedString alloc] initWithString:self.label.text];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.alignment = NSTextAlignmentJustified;
paragraphStyle.paragraphSpacing = 10;// 段与段之间的距离,相当于table的sectionHeadHeight
paragraphStyle.paragraphSpacingBefore = 5; // 段落前,与上一段落的距离,相当于table的headheight
paragraphStyle.firstLineHeadIndent = 20; // 每个段落的首行缩进
paragraphStyle.headIndent = 35; // 段落中除了首行以外的行的缩进
NSDictionary *attribute = @{
NSForegroundColorAttributeName : [UIColor blueColor],
NSFontAttributeName : [UIFont systemFontOfSize:18],
NSParagraphStyleAttributeName : paragraphStyle,
//NSUnderlineStyleAttributeName : @(NSUnderlineStyleNone)
};
[mAttributeStr setAttributes:attribute range:NSMakeRange(0, mAttributeStr.length)];
NSAttributedString *attributeStr = [mAttributeStr copy];
self.label.attributedText = attributeStr;
}
- 需要解释一下,这里的代码只能针对有多行的情况,并不适用于只有一行且不足以填充满Label一行的情况,这一点和Word文本编辑是一个道理,两段对齐仅对一些特殊的字符集合(比如中文中夹杂英文单词),在同一行显示下了时,对中文字符进行字符间间隙调整,将英文单词换行处理,处理后中文达到两段对齐的效果;
- 这里主要是把paragraphStyle的参数进行记录并分享;
- 在代码里有比较详情的注释,路过的朋友可以参考;
- 另外我是在iOS8.1及iOS9上进行测试,iOS7的机子��;
- 这篇文章的写作想法来源是简书上的一片文章,文章作者没有进行更新、参数也没有进行详细说明,属性attributedText功能探索之两端对齐1
最后截图
- 属性attributedText功能探索之两端对齐: http://www.jianshu.com/p/38a6fd46fb9c ↩