в xcode/iOS: для автоматического изменения размеров элемент для заполнения посмотреть – откровенные Размер кадра имеет важное значение?

Хотелось бы UITextView, чтобы заполнить его superview, который представляет собой обычный UIView внутри экземпляр UIViewController.

Кажется, что я не могу принять ‘текстовое’ сделать это исключительно с помощью API-указанные свойства autoresizingMask и autoresizesSubviews. Установка этих как показано здесь ничего не делает; текстовое остается небольшим, хотя его суперпанель заполняет экран.

// use existing instantiated view inside view controller; // ensure autosizing enabled self.view.autoresizesSubviews = YES; self.view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth; // create textview textView = [[[UITextView alloc] autorelease] initWithFrame:CGRectMake(0, 0, 1, 1)]; // enable textview autoresizing [textView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight]; // add textview to view [self.view addSubview:textView]; 

Однако, если я создаю мой собственный вид внутри вид контроллера, замена его.собственность вид’, то все работает, как ожидалось, и виджет textview, наполняет его суперпанель:

// reinstantiate view inside view controller self.view = [[UIView alloc]init]; // create textview textView = [[[UITextView alloc] autorelease] initWithFrame:CGRectMake(0, 0, 1, 1)]; // enable textview autoresizing [textView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight]; // add textview to view [self.view addSubview:textView]; 

Я пробовал оба куски кода внутри каждого из этих initialisers/методов, и такая же ситуация возникает в каждом случае:

-(id)init; -(id)initWithFrame:(CGRect)frame; -(void)viewDidLoad; 

Я понимаю, что reinstantiating в ‘.вид контроллера вид уродец, кто-нибудь может объяснить что я делаю не так? Как я предполагал, я мог бы решить эту проблему, имея начальный кадр-настройка код в моей UIViewController, чтобы один раз изменить размер виджет textview, а затем autoresizing будет действовать по желанию.

-(void)viewDidLoad {     textView.frame = self.view.frame; } 

..но, казалось бы, вид.рамка не настроена на данном этапе, она не имеет его.значения Размер определен, поэтому в очередной раз в textview остается небольшой.

Каков правильный способ достижения чего я хочу? Я должен явно указать полноэкранный режим измерений с помощью UITextView:initWithFrame, чтобы получить его, чтобы заполнить его суперпанель?

Буду благодарен за любые советы вы можете предложить.

One thought on “в xcode/iOS: для автоматического изменения размеров элемент для заполнения посмотреть – откровенные Размер кадра имеет важное значение?

  1. Autoresizing не значит, что подпанели возьмется за Размер своего суперпанель. Это просто означает, что он будет изменять, относительно изменения размера его суперпанель когда границы суперпанель изменения. Так, первоначально вы должны установить Размер подпанели к правильному значению. В autoresizing маска тогда будет заниматься изменением размера в будущем.

    Это все, что вам нужно:

    textView = [[[UITextView alloc] autorelease] initWithFrame:self.view.bounds]; [textView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight]; 

Comments are closed.