将“填充”添加到UITextView

正如标题所说,我正在尝试向UITextView添加类似于填充的行为。 当视图在我的导航控制器中被推入并且出现以下代码时,生成textview:

self.textView.layer.cornerRadius = 7; //pretty stuff is pretty NSString *description = appDelegate.productInDisplay.description; [self.textView setText:description]; //pretty stuff has content now CGRect frame = textView.frame; frame.size.height = textView.contentSize.height; textView.frame = frame; //set the UITextView to the size of it's containing text. self.textView.editable = NO; self.theScrollView.contentSize = CGSizeMake(320, 250 + textView.frame.size.height); //set the parent scrollView's height to fit some other elements with fixed size (250) //and the pre-mentioned UITextView 

所以,这一切工作,没关系,但我想在UITextView的所有四边添加一些填充,我已经无法做到这一点与3小时的search似乎相当容易的东西。 有什么build议么?

编辑1/16/2015:这是写在2012年,不再准确。 如上所述使用-textContainerInset。

原文:

使用contentInset实际上不会工作。 你有两个合理的select:子类UITextField和重写textRectForBounds:和editingRectForBounds:方法或创build您的文本字段透明的UIView和风格的UIView。

子类化UITextField的例子:

 - (CGRect)textRectForBounds:(CGRect)bounds { return CGRectInset(bounds, 5, 5); } - (CGRect)editingRectForBounds:(CGRect)bounds { return CGRectInset(bounds, 5, 5); } 

将其包装在UIView中的示例:

 UIView *wrapView = [[UIView alloc] initWithFrame: CGRectMake(10, 10, 200, 30)]; [wrapView addSubview:textView]; wrapView.layer.borderColor = [UIColor darkGrayColor].CGColor; wrapView.layer.borderWidth = 2.0; wrapView.layer.cornerRadius = 5.0; 

使用iOS7我已经完成了

 [self.textView setTextContainerInset:UIEdgeInsetsMake(0, 12, 0, 12)]; 

希望这有助于,马里奥

这个答案是完全错误的。 正确答案很简单:

 uitextview.textContainerInset = UIEdgeInsetsMake(8,5,8,5); // top, left, bottom, right 

(这些值通常与相同屏幕上的UITextField的外观相匹配。)


使用这个:

 self.textView.contentInset = UIEdgeInsetsMake(5, 5, 5, 5); 

这对我使用SWIFT 2.0:

textView.textContainerInset = UIEdgeInsetsMake(10, 10, 10, 10)

对于Swift 3来说,答案似乎相似,但略有不同:

 textview.contentEdgeInsets = UIEdgeInsets(top: 2, left: 10, bottom: 2, right: 10) 

(其实,我用上面的UIButtonView,但是因为它是如此封闭的UITextView张贴的答案,我想[希望]它也适用于此)