iOS 深度好文

iOS 富文本首行悬挂

2017-06-02  本文已影响768人  standlr

段落悬挂从网上找了找没有看到特此记录。
可以通过富文本段落样式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中国
上一篇下一篇

猜你喜欢

热点阅读