iOS 富文本首行悬挂

段落悬挂从网上找了找没有看到特此记录。
可以通过富文本段落样式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.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?0儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。\n2.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。\n3.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。";

NSString * str = @"1.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。\n2.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。\n3.群儿鞭笞学官府,翁怜痴儿傍笑侮。翁出坐曹鞭复呵,贤于群儿能几何?儿曹相鞭以为戏,翁怒鞭人血满地。等为戏剧谁后先我笑谓翁儿更贤。";
label.attributedText = [self getAttributeStringWith:str];
[self.view addSubview:label];

效果图


另附 关于文字展示更深层次讲解
iOS文字展示原理 -源自Objc中国

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

友情链接更多精彩内容