段落悬挂从网上找了找没有看到特此记录。
可以通过富文本段落样式NSMutableParagraphStyle
的两个属性去处理 首行缩进firstLineHeadIndent
段落缩进headIndent
不废话了 看代码
- (NSAttributedString *)getAttributeStringWith:(NSString *)str{
NSDictionary * attributes = @{NSFontAttributeName:[UIFont systemFontOfSize:12]};
NSMutableAttributedString * mAttr = [[NSMutableAttributedString alloc] initWithString:str attributes:attributes];
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
[paragraphStyle setLineSpacing:10];//行间距
[paragraphStyle setFirstLineHeadIndent:-10];
[paragraphStyle setHeadIndent:10];
[mAttr addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, str.length)];
return mAttr;
}
主要是下面两个行代码控制文本悬挂间距,原理不多说了就是字面意思。
[paragraphStyle setFirstLineHeadIndent:-10]; [paragraphStyle setHeadIndent:10];
使用方法
UILabel * label = [[UILabel alloc] initWithFrame:CGRectMake(10, 64, CGRectGetWidth(self.view.frame)-20, CGRectGetHeight(self.view.frame))];
label.numberOfLines = 0;
NSString * str = @"1.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。\n2.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。\n3.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。";
label.attributedText = [self getAttributeStringWith:str];
[self.view addSubview:label];
效果图
另附 关于文字展示更深层次讲解
iOS文字展示原理 -源自Objc中国
网友评论