如何控制我的 UITextView 的右边距

How to control the right margin of my UITextView

我正在尝试使用界面生成器中的约束来为 table 视图单元格中的静态文本视图设计一个简单的布局。文本应横跨整个屏幕,前缘和后缘均留有标准边距。

它在 iPhone 纵向上看起来很好,但是当设备旋转时,在某些情况下,尽管有限制,但出现比预期更大的右边距。这在第一对图像中可见 - 文本行在达到标准边距之前意外中断。

在第二对图像中,视图顶部的右边距是正确的 (20),但比其他地方的要大 - 在同一文本视图中!

我在 viewDidLoad 中有这个

    tableView.rowHeight = UITableView.automaticDimension
    tableView.estimatedRowHeight = 600

    override func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat
{
    //        NSLog("Section %ld Row %ld", (long)[indexPath section], (long)[indexPath row]);
    return UITableView.automaticDimension
}

建议似乎是 - 对所有页边距都有限制,并且应该自动调整大小。

如果我采用原子操作,然后重新开始构建视图,通常可以解决问题。这是调试视图的正常部分吗?

查看您的屏幕截图和您在同一文本视图中获得不同右边距的关键评论,在我看来您的问题与视图或约束无关,但与文本布局有关.

您似乎正试图在 Interface Builder 中设计一个巨大的属性字符串。那是行不通的。 Interface Builder 中的属性字符串设计器用处不大,当然也不适合扩展工作。

以正确的方式做到这一点:以其他方式设计和显示您的属性文本。在启动时加载文件并在代码中填充界面。您可以使用 CSS 在 HTML 中设计文本并将其布局在 WKWebView 中,或者您可以在 RTF(或 HTML)中设计文本并将其加载为 NSAttributedString 并将其放置进入文本视图。您甚至可以完全在代码中构建文本,从头开始,作为 NSMutableAttributedString!但无论哪种方式,您都需要控制您的文本,以便了解和控制它是什么以及段落边距是多少。

从某种意义上说,这是基本MVC的失败。 Interface Builder 用于构建您的 界面 :"a text view goes here"。那是 view进入文本视图的是模型:这是您的数据。您不能在 Interface Builder 中设计 data。学习构建和显示属性文本或 HTML 代码.