请教UITextView 内容缩进问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了请教UITextView 内容缩进问题相关的知识,希望对你有一定的参考价值。

总体来说个性化定制UITextView中的内容有两种方法:
1,从文件中读取内容到UITextView,这个个人感觉使用rtfd和rtf格式文件效果非常好。
2,使用NSAttributeString进行定制
具体方法如下:
NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc]init];
paragraphStyle.lineHeightMultiple = 20.f;
paragraphStyle.maximumLineHeight = 25.f;
paragraphStyle.minimumLineHeight = 15.f;
paragraphStyle.firstLineHeadIndent = 20.f;
paragraphStyle.alignment = NSTextAlignmentJustified;

NSDictionary *attributes = @ NSFontAttributeName:[UIFont systemFontOfSize:14], NSParagraphStyleAttributeName:paragraphStyle, NSForegroundColorAttributeName:[UIColor colorWithRed:76./255. green:75./255. blue:71./255. alpha:1]
;
textView.attributedText = [[NSAttributedString alloc]initWithString:content attributes:attributes];

当然也可以初始化一个NSMutableAttributedString,然后向里面添加文字样式,最后将它赋给textView的AttributedText即可
NSMutableAttributedString *atr = [[NSMutableAttributedString alloc]initWithString:detail];
[atr addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, detail.length)];
textView.attributedText = atr;

另外,对于textview中的链接样式,同样也可以定制
NSDictionary *linkAttributes = @NSForegroundColorAttributeName: [UIColor blueColor],
NSUnderlineColorAttributeName: [UIColor blackColor],
NSUnderlineStyleAttributeName: @(NSUnderlinePatternDash);
self.linkTextAttributes = linkAttributes;

这里只是个简单的例子,具体还有很多属性可以自行参考头文件
参考技术A uitextview的缩进我是通过给uitextview定义一个inset的property,当每次set的时候,调用[self layoutIfNeed],在自己的uitextview中重写
- (CGRect)textRectForBounds:(CGRect)bounds
- (CGRect)editingRectForBounds:(CGRect)bounds

这两个方法来实现缩进的。。
我之前弄uitextview的时候设置placeholder是通过判断textview.text来实现的,但是后面觉得这种方式有挺大的局限性的。。所以我就在uitextview上加了个label的property,这样能满足我的很多要求。

以上是关于请教UITextView 内容缩进问题的主要内容,如果未能解决你的问题,请参考以下文章

无法更改 UIText 视图的字体(使用 Web 服务时)

在多个 UITextView 中显示长文本

带有文本样式的 UITextView 缩进

UIPopOver、UITextView 和自动调整大小

如何在 UITextView 中实现滚动功能?

更改段落样式后重绘 UITextView 选择