问题
I'm displaying text inside UITextView. I need to apply some padding to text. When i use value for top position it's working. If i use value for other position it's not working.
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];
回答1:
For iOS7 use textContainerInset
@property(nonatomic, assign) UIEdgeInsets textContainerInset NS_AVAILABLE_IOS(7_0);
For Bellow iOS7 use contentInset
and setting UIEdgeInsetsMake
as bellow syntax.
UIKIT_STATIC_INLINE UIEdgeInsets UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) {
UIEdgeInsets insets = {top, left, bottom, right};
return insets;
}
According to your code you are setting only top side inset But if you wish to set all side you have to set content inset like bellow :-
if (floor(NSFoundationVersionNumber) <= NSFoundationVersionNumber_iOS_6_1) {
_TxtViewSummary.contentInset = UIEdgeInsetsMake(10, 0, 10, 0);
} else {
_TxtViewSummary.textContainerInset = UIEdgeInsetsMake(10, 10, 10, 10);
}
That look like this:-
回答2:
Use this:
[txtt setTextContainerInset:UIEdgeInsetsMake(7, 7, 0, 0)];
Also, the right way to position element is in layoutSubviews
method.
回答3:
Another possible solution is the following:
self.textView.contentInset = UIEdgeInsets(top: 740.0, left: 0, bottom: 20.0, right: 0)
self.textView.contentOffset = CGPoint(x: 0, y: -740)
I was getting an unwanted behaviour where textContentInset
was placing the text properly to begin with, but then the content would scroll off screen.
来源:https://stackoverflow.com/questions/22935277/uitextview-contentinset-is-not-working