更新:此解决方案自 iOS 7 起已过时。
请参阅下面的答案。在 iOS 7.0 中,引入了textContainerInseton 属性。UITextView
目标-C:
textView.textContainerInset = UIEdgeInsetsMake(0, 50, 0, 0);
迅速:
textView.textContainerInset = UIEdgeInsets(top: 0, left: 50, bottom: 0, right: 0)
或者正如Zeev Vax建议的那样,在 Swift 5.0 中:
textView.textContainerInset.left = 50
iOS 7 之前的解决方案:
我的印象是 contentInset 挤压了 uitextview 而不会导致这个水平滚动条......
恐怕这不是contentInset与UITextView. 请参阅Apple 的文档以了解contentInset其中的说明:
内容视图与封闭滚动视图的插入距离...使用此属性添加到内容周围的滚动区域。
围绕内容添加contentInset。
您可以使用上面包含的代码更改contentSizein :viewDidLayoutSubviews
- (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
}
但是,这会导致文本在右侧被截断:

我能够在 a 中实现水平填充外观的最佳方法UITextView是将其放置在 container 中UIView。在您的情况下,只需创建UIView与当前文本视图相同大小的文本视图,然后在容器视图内添加一个窄 50px 的文本视图。
如果您有文本视图的背景,则此解决方法可能会导致问题,但从上面的屏幕截图来看,这对您来说似乎不是问题。
UITextView(红色框)UIView容器内:

如果您UITextView确实有背景,请参阅:
希望对您有所帮助,如果有人能找到更好的解决方案,我很想听听!