IOS - 从UITextView中删除所有填充

问题描述:

在SO上有很多很好的例子来删除UITextView的左边填充。IOS - 从UITextView中删除所有填充

How to lose margin/padding in UITextView?

不过,我需要删除右侧填充了。

我已经试过......

[tv setContentInset: UIEdgeInsetsMake(-4,-8,-8,-X)];//where X is any integer 

和最后两个值的几乎所有其他置换来去除填充和似乎没有任何工作。也试图

[tv sizeToFit]; 
[tv setTextAlignment:[NSTextAlignmentRight]]; 

在TextView中下面的文字写着 “00”

enter image description here

+0

我试图用空字符串替换空字符串,如您所说。但是,如果我现在将插图注释掉了,我会再次填充顶部和左侧填充。 – mattyd 2013-04-05 01:18:12

+0

不是空的,空的。用'“”'(空)替换''“'(空格)。是否有可能用自定义的UILabel替换UITextView? – 2013-04-05 20:04:57

+0

我将String设置为“00”,没有空格。我不确定它是否可行,但我为navigation.rightbarbuttonitem创建了一个UIview,然后用自定义视图初始化。我添加了一个图像视图和一个textview到视图,我没有想到我可以子视图标签 – mattyd 2013-04-05 20:30:40

虽然iOS的7只,非常干净的解决方案是设置的TextView的textContainerInsets这样:

[textView setTextContainerInset:UIEdgeInsetsZero]; 
textView.textContainer.lineFragmentPadding = 0; // to remove left padding 

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

+1

恐怕这不起作用,即使是我的iOS7 +项目。 – 2013-12-02 04:26:32

+0

完全按照规定工作。 UITextView textContainerInset专门用于此目的,因为它不需要子类,所以它是运行iOS7及更高版本系统的最佳答案。 – Biclops 2014-02-14 20:11:29

+50

添加此行也删除左填充 'self.textView.textContainer.lineFragmentPadding = 0;' – 2014-03-08 07:15:10

请重子类中的UITextView并覆盖下面的方法:

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

显然;你可以调整任何你想要的利润率左,上边距&;)

+1

这是iOS6的最佳解决方案。但它需要像下面这样声明:'@interface UITextView(Stylesheet) - (id)styleString; @ end' – situee 2014-01-27 08:44:59

+1

从过去的这个答案仍然非常辉煌,但最近在Swift(dbart/mattsven等)中的答案是Swift的答案! – Fattie 2016-06-28 18:06:26

我的问题就解决了这样

if([Utils isiOS7orHigher]){ 
    commentView.textContainerInset = UIEdgeInsetsZero; 
}else { 
    commentView.contentInset = UIEdgeInsetsMake(-11,-8,0,0); 
} 

更多看到http://foobarpig.com/iphone/get-rid-of-uitextview-padding.html

+2

一般来说,在您的else语句中强行编码值并不是一个好主意。您永远不会知道这会在未来或者跨设备和什么都显示。 – 2014-11-19 22:08:54

要完全删除所有填料,lineFragmentPadding必须加以考虑。

let padding = textView.textContainer.lineFragmentPadding 
textView.textContainerInset = UIEdgeInsetsMake(0, -padding, 0, -padding) 

lineFragmentPadding默认值是5,位于片段矩形的开始和结尾处。

有些答案建议将lineFragmentPadding设置为0.但是,按照文档中的讨论,它不是用来表示文本边距。所以不要将它设置为0.