我正在尝试向UITextView添加左边距。
我尝试过设置属性contentInset,见下文:
UITextView *textView = [[UITextView alloc] initWithFrame: CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
textView.editable = YES;
textView.autoresizingMask = UIViewAutoresizingFlexibleHeight;
textView.backgroundColor = [UIColor clearColor];
textView.opaque = NO;
textView.contentInset = UIEdgeInsetsMake(0, 15.0f, 0, 0);
这似乎有效,虽然它会导致我不想要的TextView上的水平滚动。
我只想让左侧的文字插入而不使textview更宽。
答案 0 :(得分:23)
请记住,对于iOS 7,有一个名为
的特殊属性textContainerInset文本容器布局区域的插图 在文本视图的内容区域内。
@property(nonatomic,assign)UIEdgeInsets textContainerInset
此属性为布置的文本提供文本边距 文本视图。
可用性适用于iOS 7.0及更高版本。在UITextView.h中声明
在iOS 6中,contentInset正在完成这项工作。我个人遇到了这个问题。一切都结束了:
if (isIOS7()) {
textView.textContainerInset = UIEdgeInsetsMake(0, 10, 0, 10);
} else {
textView.contentInset = UIEdgeInsetsMake(0, 10, 0, 10);
}
答案 1 :(得分:16)
如果您只想移动文字,请尝试
[textView setContentInset:UIEdgeInsetsMake(<#CGFloat top#>, <#CGFloat left#>, <#CGFloat bottom#>, <#CGFloat right#>)];
如果正数将“文本框架”移向中间,则负数将其从中间移出。
例如,[textView setContentInset:UIEdgeInsetsMake(0, 20, 0,-20)]
会将文字向右移动20个像素!
答案 2 :(得分:2)
唯一对我有用的是通过对UITextView进行子类化并重写以下方法:
- (id)styleString
{
return [[super styleString] stringByAppendingString:@"; line-height: 1.6em;margin-right: 30px; margin-left: 45px; margin-top: 20px;"];
}
显然;你可以调整保证金左边,保证金顶部和无论你想要什么;)
关于将UITextView放在更大的UIView中的建议对我来说不起作用,因为我需要在UITextView的后台中滚动行,我使用以下开源项目来做到这一点: https://github.com/aahsanali/NoteView
此外,以下解决方案根本没有帮助我:
[textView setContentInset:UIEdgeInsetsMake(0, 20, 0,-20)]
因为它没有正确包装文本。
我希望这个解决方案有所帮助,因为我花了一周时间深入研究这个简单的UI调整!
答案 3 :(得分:1)
您可以使用 Swift 3.0
尝试以下代码// Align the text to the left edge of textContainer
textView.textContainer.lineFragmentPadding = 16
// Align the text with the top of textContainer
textView.textContainerInset = UIEdgeInsets.zero
它对我有用。
答案 4 :(得分:0)
如果你通过IB这样做会容易得多。找到名为滚动视图大小&amp;的面板设置内容插入。
在代码中,您可以尝试将scrollEnabled
设置为NO。
答案 5 :(得分:0)
UITextView
使用Web视图在内部实现。这些内部使用了大量未记录的技巧,这些技巧也会在操作系统更新之间发生变化。其中一个技巧是一次又一次重置 contentInsets
属性。何时以及为什么没有记录,我已经了解到对文本视图布局的任何更改都会/将触发此重置。
我的第一个建议是不要尝试调整文本视图的插图。它只是脆弱的,将来可能会破裂。
如果你真的坚持,那么我会继承UITextView
,覆盖-[UITextView layoutSubviews]
并在那里强制新的插图。
在任何一种情况下,我都会转到http://bugreport.apple.com并将当前行为报告为严重错误。