我正在使用UITextView
进行文字编辑。我希望UITextView
的修改区域与UILabel
相同。我使用UIEdgeInsetsMake(-4,-8,0,-8)
方法,它有点帮助,它删除了左边的填充和顶部填充,但右边的填充仍然存在。
有没有办法在iOS 6中删除UITextView
的正确填充?
答案 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/