如何在iOS 6中删除UITextView右侧边距?

时间:2014-10-13 10:19:09

标签: ios uitextview

我正在使用UITextView进行文字编辑。我希望UITextView的修改区域与UILabel相同。我使用UIEdgeInsetsMake(-4,-8,0,-8)方法,它有点帮助,它删除了左边的填充和顶部填充,但右边的填充仍然存在。

有没有办法在iOS 6中删除UITextView的正确填充?

2 个答案:

答案 0 :(得分:0)

如果您只定位iOS6,那么您可以使用 contentInset 这样来提供上下边距,

textView.contentInset = UIEdgeInsetsMake(20.0, 0.0, 20.0, 0.0);

对于左边距和右边距,不要立即添加纯文本,而是使用NSAttributedString代替,并使用NSMutableParagraphStyle正确设置左右缩进:

NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
paragraphStyle.headIndent = 20.0;
paragraphStyle.firstLineHeadIndent = 20.0;
paragraphStyle.tailIndent = -20.0;

NSDictionary *attrsDictionary = @{NSFontAttributeName: [UIFont fontWithName:@"HelveticaNeue" size:12.0], NSParagraphStyleAttributeName: paragraphStyle};
textView.attributedText = [[NSAttributedString alloc] initWithString:@"SomeText...." attributes:attrsDictionary];

如果您还支持iOS7,请使用 textContainerInset

textView.textContainerInset = UIEdgeInsetsMake(0, 20.0, 0, 20.0)

请记住,您需要使用respondToSelector检查textContainerInset的可用性。

答案 1 :(得分:0)

UITextView有一个名为textContainerInset的属性。此插入的默认值为(top = 8,left = 0,bottom = 8,right = 0)。因此,将此插入设置为UIEdgeInsetsZero应该摆脱顶部和底部填充。

textView.textContainerInset = UIEdgeInsetsMake(20.0,0.0,20.0,0.0)

但是文本的左侧和右侧仍然有一些填充。摆脱它的解决方案并不像将insets设置为零那样明显。 UITextView使用NSTextContainer对象来定义文本显示的区域。这个NSTextContainer对象有一个名为lineFragmentPadding的属性。此属性定义文本在行片段矩形内插入的量,或者换句话说:文本的左右填充。默认值为5.0,因此将此值设置为0将删除填充。

textView.textContainer.lineFragmentPadding = 0;

link:http://www.pixeldock.com/blog/how-to-get-rid-of-the-padding-insets-in-an-uitextview/