IOS - 从UITextView中删除所有填充

mat*_*tyd 49 padding uitextview ios

在SO上有许多很好的例子来删除UITextView的左边距.

如何在UITextView中丢失边距/填充?

但是,我也需要删除正确的填充.

我试过了...

[tv setContentInset: UIEdgeInsetsMake(-4,-8,-8,-X)];//where X is any integer
Run Code Online (Sandbox Code Playgroud)

几乎所有其他排列的最后两个值删除填充,似乎没有任何工作.也试过了

[tv sizeToFit];
[tv setTextAlignment:[NSTextAlignmentRight]];
Run Code Online (Sandbox Code Playgroud)

Textview中的以下文本显示"00"

在此输入图像描述

dba*_*art 165

虽然它只是iOS 7,但是一个非常干净的解决方案是将textView的textContainerInsets设置为:

[textView setTextContainerInset:UIEdgeInsetsZero];
textView.textContainer.lineFragmentPadding = 0; // to remove left padding
Run Code Online (Sandbox Code Playgroud)

这将有效地删除文本视图内文本周围的所有填充(插入).如果您的部署目标是iOS 7+,那么这是迄今为止最好的解决方案.

  • 添加此行也是为了删除左边的填充`self.textView.textContainer.lineFragmentPadding = 0;` (59认同)
  • 这应该被标记为正确的答案.谢谢你,先生! (5认同)

Abh*_*was 20

面向 OA 的 Swift 4 版本

self.tDescription.textContainerInset = UIEdgeInsets.zero
self.tDescription.textContainer.lineFragmentPadding = 0
Run Code Online (Sandbox Code Playgroud)


sam*_*ize 17

要完全删除所有填充,lineFragmentPadding必须考虑到.

let padding = textView.textContainer.lineFragmentPadding
textView.textContainerInset = UIEdgeInsetsMake(0, -padding, 0, -padding)
Run Code Online (Sandbox Code Playgroud)

lineFragmentPadding默认值是5,并且是在开始和片段矩形的端部.

一些答案建议设置lineFragmentPadding为0.但是,根据文档中的讨论,它不是为了表达文本边距而设计的.所以不要将其设置为0.


小智 17

适用于 iOS 11.7

以下代码对我有用:

    textView.textContainer.lineFragmentPadding = CGFloat(0.0)
    textView.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    textView.contentInset = UIEdgeInsets(top: 0,left: 0,bottom: 0,right: 0)
Run Code Online (Sandbox Code Playgroud)

来自官方文档

textContainerInset :可以设置文本容器和视图大小以及调整大小行为,以便无法inset准确地维护,尽管文本系统会尽力维护inset

在任何情况下,textContainerOrigin文本容器的大小和大小对于文本容器在视图内的位置具有权威性。文本本身可以在文本容器内有一个额外的插入,由 的lineFragmentPadding方法指定NSTextContainer


Moh*_*rim 7

请尝试对UITextView进行子类化并重写以下方法:

    - (id)styleString
{
    return [[super styleString] stringByAppendingString:@"; line-height: 1.6em;margin-right: 30px; margin-left: 0px; margin-top: 0px;"];
}
Run Code Online (Sandbox Code Playgroud)

很明显; 你可以调整边距左边,边距顶边和你想要的任何东西;)