Я бы хотел, чтобы UITextView
заполнил свой superView
, который представляет собой простой UIView
внутри экземпляра UIViewController
.
Похоже, я не могу заставить UITextView
делать это исключительно с помощью свойств, определенных API autoresizingMask
и autoresizesSubviews
. Установка их, как показано здесь, ничего не дает; UITextView
остается небольшим, хотя его superView
заполняет экран.
// 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];
Однако, если я создаю экземпляр своего собственного представления внутри контроллера представления, заменяя его свойство '.view', тогда все работает, как ожидалось, и 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];
Я пробовал оба фрагмента кода внутри всех этих инициализаторов / методов, и во всех случаях возникает одна и та же ситуация:
-(id)init;
-(id)initWithFrame:(CGRect)frame;
-(void)viewDidLoad;
Я понимаю, что восстанавливаю '.view' из UIViewController
ускользает, может ли кто-нибудь объяснить, что я м делаю не так? Я предположил, что смогу решить эту проблему, имея код начальной настройки кадра в моем UIViewController
, чтобы изменить размер UITextView
один раз, а затем автоматическое изменение размера
будет работать должным образом.
-(void)viewDidLoad {
textView.frame = self.view.frame;
}
... но, похоже, view.frame не настроен на этом этапе, для него не определены значения '.size', поэтому снова textView остается маленьким.
Каков правильный способ достичь того, что я хочу ? Должен ли я явно указывать полноэкранные размеры через UITextView: initWithFrame
, чтобы заставить его заполнить свой супервизор?
Я буду благодарен за любой совет, который вы можете предложить.