繁体   English   中英

如何在iOS 6中删除UITextView右侧填充?

[英]How to remove UITextView right-hand-side padding in iOS 6?

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

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

如果您仅定位到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可用性。

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

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

但是在文本的左侧和右侧仍然有一些填充。 消除该问题的解决方案并不像将插图设置为零那么明显。 UITextView使用NSTextContainer对象定义显示文本的区域。 这个NSTextContainer对象具有一个名为lineFragmentPadding的属性。 此属性定义在线段矩形内插入文本的数量,即换句话说:文本的左侧和右侧填充。 默认值为5.0,因此将其设置为0将删除填充。

textView.textContainer.lineFragmentPadding = 0;

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM