【问题标题】:IPhone: Change line spacing in UITextView?iPhone:更改 UITextView 中的行距?
【发布时间】:2011-04-18 23:06:31
【问题描述】:

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

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

任何示例代码或信息将不胜感激!谢谢!

【问题讨论】:

    标签: iphone text line spacing paragraph


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      这个问题是在 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;
      

      【讨论】:

        【解决方案3】:

        您不必查看整个网络。查看UITextView 的文档就足以确定该控件不支持更改行距。

        当然,使用 Core Text,您可以完全控制所绘制文本的布局。但是从头开始重写类似UITextView 的控件需要大量的工作。

        【讨论】:

        • 绝对,从 iOS 4.3 开始,UITextView 不支持任何行高更改。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-10-10
        • 2020-04-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多