我在我的iOS应用程序中有一个UITextView,它显示大量的文本。

然后,我通过使用UITextView的offset margin参数来分页此文本。

我的问题是UITextView的填充使我的计算感到困惑,因为它似乎是不同的,取决于我使用的字体大小和字体。

是否有可能移除UITextView内容周围的填充?


当前回答

对于 SwiftUI

如果你正在使用UIViewRepresentable制作自己的TextView并想要控制填充,在你的makeUIView函数中,简单地做:

uiTextView。textContainerInset = UIEdgeInsets(上:10,左:18,下:0,右:18)

或者随便你。

其他回答

你可以使用UITextView的textContainerInset属性:

textView.textContainerInset = UIEdgeInsetsMake(10, 10, 10, 10);

(上,左,下,右)

如果有人正在寻找最新的Swift版本,那么下面的代码可以很好地与Xcode 10.2和Swift 4.2一起工作

yourTextView.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)

在iOS 5上UIEdgeInsetsMake(-8,-8,-8,-8);看起来效果不错。

我肯定会避免任何涉及硬编码值的答案,因为实际边距可能会随着用户字体大小设置等而改变。

下面是user1687195的答案,没有修改textContainer。lineFragmentPadding(因为文档声明这不是预期的用法)。

这适用于iOS 7和更高版本。

self.textView.textContainerInset = UIEdgeInsetsMake(
                                      0,
                                      -self.textView.textContainer.lineFragmentPadding,
                                      0,
                                      -self.textView.textContainer.lineFragmentPadding);

这实际上是相同的结果,只是稍微干净一点,因为它没有滥用lineFragmentPadding属性。

基于已经给出的一些好的答案,这里是一个纯基于Storyboard / Interface builder的解决方案,适用于iOS 7.0+

为以下键设置UITextView的用户定义运行时属性:

textContainer.lineFragmentPadding
textContainerInset