【发布时间】:2011-04-18 23:06:31
【问题描述】:
我一直在网上寻找信息/示例...
我正在尝试将 UITextView 对象内的文本行距更改为双倍行距。我以为你可以通过 Core Text 做到这一点,但还没有找到解决方案!
任何示例代码或信息将不胜感激!谢谢!
【问题讨论】:
标签: iphone text line spacing paragraph
我一直在网上寻找信息/示例...
我正在尝试将 UITextView 对象内的文本行距更改为双倍行距。我以为你可以通过 Core Text 做到这一点,但还没有找到解决方案!
任何示例代码或信息将不胜感激!谢谢!
【问题讨论】:
标签: iphone text line spacing paragraph
您可以使用 NSLayoutManagerDelegate。将该委托添加到您的 ViewController 或 UIView 类(等),然后在您创建 UITextView 时...
yourTextView.layoutManager.delegate = self
添加这个委托方法:
func layoutManager(layoutManager: NSLayoutManager, lineSpacingAfterGlyphAtIndex glyphIndex: Int, withProposedLineFragmentRect rect: CGRect) -> CGFloat {
return 5 //Whatever you'd like...
}
【讨论】:
这个问题是在 iOS 6 之前提出的。我想为那些想要这样做的人发布一个更新的答案。
现在可以在 iOS 6 及更高版本中使用 NSAttributedString 来完成。 UITextView 现在接受属性字符串作为其属性之一。您可以使用属性字符串进行各种文本操作,包括行距。您可以为字符串的段落样式属性设置最小和最大行高。
查看NSAttributedString Class Reference 了解更多信息。
以下是您可以执行的操作示例:
NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];
paragraph.minimumLineHeight = 21.0f;
paragraph.maximumLineHeight = 21.0f;
NSAttributedString *attributedString = [[NSAttributedString alloc] initWithString:@"Test text line 1\nTest text line 2\nTest text line 3" attributes:@{NSParagraphStyleAttributeName: paragraph}];
textView.attributedText = attributedString;
【讨论】:
您不必查看整个网络。查看UITextView 的文档就足以确定该控件不支持更改行距。
当然,使用 Core Text,您可以完全控制所绘制文本的布局。但是从头开始重写类似UITextView 的控件需要大量的工作。
【讨论】: