UITextView contentInset不起作用

我在UITextView中显示文本。 我需要应用一些填充文本。 当我使用价值顶部的位置,它的工作。 如果我使用其他职位的价值,它不工作。

txtt_bgImage = [UIImage imageNamed:@"txtt_bg_ipad.png"]; txtt_bgImageView = [[UIImageView alloc] initWithImage:txtt_bgImage]; txtt=[[UITextView alloc]initWithFrame:CGRectMake(170, 300, 400, 250)]; txtt.text=productDescription; [txtt setFont: [UIFont fontWithName:@"verdana" size:15]]; txtt.textColor=[UIColor whiteColor]; [txtt setBackgroundColor:[UIColor clearColor]]; txtt.contentInset = UIEdgeInsetsMake(15,0,0,0); // [txtt setTextContainerInset:UIEdgeInsetsMake(7, 7, 0, 0)]; txtt_bgImageView.frame=CGRectMake(170, 300, 400, 250); [self.view addSubview:txtt_bgImageView]; txtt.editable=NO; NSLog(@"text is %@",txtt.text); object.object_screentext = txtt; [self.view addSubview:txtt]; 

对于iOS7使用textContainerInset

 @property(nonatomic, assign) UIEdgeInsets textContainerInset NS_AVAILABLE_IOS(7_0); 

对于Bellow iOS7,使用contentInset并将UIEdgeInsetsMake设置为以下语法。

 UIKIT_STATIC_INLINE UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) { UIEdgeInsets insets = {top, left, bottom, right}; return insets; } 

根据你的代码,你只设置顶部插入但如果你想设置所有的一面,你必须设置内容像波纹pipe: –

 if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) { _TxtViewSummary.contentInset = UIEdgeInsetsMake(10, 0, 10, 0); } else { _TxtViewSummary.textContainerInset = UIEdgeInsetsMake(10, 10, 10, 10); } 

看起来像这样:

在这里输入图像说明

用这个:

 [txtt setTextContainerInset:UIEdgeInsetsMake(7, 7, 0, 0)]; 

另外,定位元素的正确方法是在layoutSubviews方法中。

另一个可能的解决scheme如下:

 self.textView.contentInset = UIEdgeInsets(top: 740.0, left: 0, bottom: 20.0, right: 0) self.textView.contentOffset = CGPoint(x: 0, y: -740) 

我得到了一个不希望的行为,其中textContentInset正确地放置文本开始,但内容将滚动屏幕。