4

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];
user3496826
  • 101
  • 2
  • 13
  • possible duplicate of [UITextView contentInset not working in UITextView on iOS 7?](http://stackoverflow.com/questions/19203486/uitextview-contentinset-not-working-in-uitextview-on-ios-7) – Vincent Guerci Apr 08 '14 at 11:22
  • I'm not using iOS7. I referred that question already it's not working – user3496826 Apr 08 '14 at 11:24

4 Answers4

5

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:-

enter image description here

Nitin Gohel
  • 48,603
  • 17
  • 104
  • 138
2

textView.textContainerInset = UIEdgeInsets(top: 14, left: 16, bottom: 14, right: 16)

Shockki
  • 21
  • 1
1

Use this:

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

Also, the right way to position element is in layoutSubviews method.

Vinay Jain
  • 2,601
  • 3
  • 24
  • 42
0

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.

C4 - Travis
  • 4,492
  • 4
  • 29
  • 56