我在我的iOS应用程序中有一个UITextView,它显示大量的文本。
然后,我通过使用UITextView的offset margin参数来分页此文本。
我的问题是UITextView的填充使我的计算感到困惑,因为它似乎是不同的,取决于我使用的字体大小和字体。
是否有可能移除UITextView内容周围的填充?
我在我的iOS应用程序中有一个UITextView,它显示大量的文本。
然后,我通过使用UITextView的offset margin参数来分页此文本。
我的问题是UITextView的填充使我的计算感到困惑,因为它似乎是不同的,取决于我使用的字体大小和字体。
是否有可能移除UITextView内容周围的填充?
当前回答
[firstNameTextField setContentVerticalAlignment:UIControlContentVerticalAlignmentCenter];
其他回答
对于 SwiftUI
如果你正在使用UIViewRepresentable制作自己的TextView并想要控制填充,在你的makeUIView函数中,简单地做:
uiTextView。textContainerInset = UIEdgeInsets(上:10,左:18,下:0,右:18)
或者随便你。
在iOS 5上UIEdgeInsetsMake(-8,-8,-8,-8);看起来效果不错。
对于iOS 7.0,我发现contentInset技巧不再有效。这是我在iOS 7中用来去除边距/填充的代码。
这将把文本的左边缘带到容器的左边缘:
textView.textContainer.lineFragmentPadding = 0
这将导致文本的顶部与容器的顶部对齐:
textView.textContainerInset = .zero
这两行都需要完全删除空白/填充。
你可以使用UITextView的textContainerInset属性:
textView.textContainerInset = UIEdgeInsetsMake(10, 10, 10, 10);
(上,左,下,右)
对于那些将HTML解析为UITextView的人来说,只需删除由结束p标记“/n”引入的新行。我假设你使用NSMutableAttributedString:
if let lastCharacter = attributedString.string.last, lastCharacter == "\n" {
attributedString.deleteCharacters(in: NSRange(location:(attributedString.length) - 1, length:1))
}