UITextView内容插入
我遇到了一些有点奇怪的contentInsets
我有一个UITextView在我的故事板中有一个剩下的50个contentInset,因为我试图添加一些填充到我的uitextview
但是,在uitextview的底部会出现一个滚动条,如下面的testing所示:
我的印象是contentInset压缩uitextview而不引起这个水平滚动条,所以我怎样才能删除水平滚动条的需要,并使所有的东西 – 插入和uitextview中的所有文本 – 可见而不需要这个滚动条。
注意:我并没有问及防止水平滚动还是不显示滚动条(因此剪切文本)
非常感谢!
对于atomk(UITextView被称为ss)
NSLog(@"Content Size Before %f",self.ss.contentSize.width); Logs: 280 CGSize size=self.ss.contentSize; size.width=size.width-50; [self.ss setContentSize:size]; NSLog(@"Content Size After %f",self.ss.contentSize.width); Logs: 230
添加的代码与添加代码之间没有明显的区别,所以出现了问题! (谢谢)
更新:这个解决scheme已经过时了。
在下面看到这个答案 。 在iOS 7.0中,引入了UITextView
的textContainerInset
属性:
textView.textContainerInset = UIEdgeInsetsMake(0, 50, 0, 0);
Pre-iOS 7解决scheme:
我有一个印象,contentInset挤压uitextview而不会导致这个水平滚动条…
恐怕这不是contentInset
如何与UITextView
contentInset
工作。 有关contentInset
的说明 ,请参阅Apple的文档 :
内容视图从包含的滚动视图中插入的距离…使用此属性添加到内容周围的滚动区域。
contentInset
添加在内容的周围。
您可以使用上面包含的代码更改viewDidLayoutSubviews
的contentSize
:
- (void)viewDidLayoutSubviews { self.textView.contentInset = UIEdgeInsetsMake(0, 50, 0, 0); NSLog(@"Content Size Before %f",self.textView.contentSize.width); //Logs: 280 CGSize size=self.textView.contentSize; size.width=size.width-50; [self.textView setContentSize:size]; NSLog(@"Content Size After %f",self.textView.contentSize.width); //Logs: 230 }
但是,这会导致文本在右侧被切断:
我已经能够在UITextView
实现水平填充的外观的最佳方式是将其放置在容器UIView
。 在你的情况下,只需创build一个与当前文本视图大小相同的UIView
,并在容器视图内添加一个50px的文本视图。
如果您拥有文本视图的背景,则此解决方法可能会导致问题,但是从上面的屏幕截图看来,对于您来说这不是一个问题。
UIView
容器内的UITextView
(红框):
如果您的UITextView
具有背景,请参阅:
- 如何设置像Notes应用程序的UITextView的内容插图
- 你从逆向工程Notes.app学到的东西 (参见“iPadding”部分)
希望有所帮助,如果有人能find更好的解决scheme,我很乐意听到!
在iOS 7中, UITextView
基于TextKit并具有新的属性textContainerInset
。 它的行为正如你所期望的那样:
UITextView *textView = ...; // Left inset of 50 points textView.textContainerInset = UIEdgeInsetsMake(0.0, 50.0, 0.0, 0.0);