mat*_*tyd 49 padding uitextview ios
在SO上有许多很好的例子来删除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+,那么这是迄今为止最好的解决方案.
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。
请尝试对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)
很明显; 你可以调整边距左边,边距顶边和你想要的任何东西;)