iPhone:在UITextView中更改行间距?

时间:2010-09-29 17:24:27

标签: iphone text line spacing paragraph

我一直在寻找'网络上的信息/示例......

我正在尝试将UITextView对象内的文本行间距更改为双倍间距。我以为你可以通过Core Text做到,但还没有找到解决方案!

非常感谢任何示例代码或信息!谢谢!

3 个答案:

答案 0 :(得分:5)

你不必遍布网络。查看UITextView的文档就足以确定该控件不支持更改行间距。

使用Core Text,您可以完全控制所绘制文本的布局。但是从头开始重写一个UITextView - 类似的控件需要做很多工作。

答案 1 :(得分:4)

这个问题是在iOS 6之前提出的。我想为那些想要这样做的人发布更新的答案。

现在可以使用NSAttributedString在iOS 6及更高版本中完成此操作。 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;

答案 2 :(得分:2)

您可以使用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...
}