xcode / iOS: Autoresize zum Füllen einer Ansicht - explizite Framegröße ist essentiell?

Ich würde gerne eine UITextView zu füllen Ihre superViewdas ist die Ebene UIView innerhalb einer UIViewController Instanz.

Es scheint, dass ich nicht die UITextView tun dies ausschließlich über die API-angegebenen Eigenschaften autoresizingMask und autoresizesSubviews. Diese Einstellung, wie hier gezeigt, macht nichts; die UITextView bleibt klein, auch wenn seine superView den Bildschirm ausfüllt.

//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];

Jedoch, wenn instanziieren ich meine eigene Ansicht innerhalb des view-Controllers ersetzen sein '.Ansicht "Eigenschaft", dann funktioniert alles wie erwartet, und die textView füllt seinen superview:

//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];

Habe ich versucht die beiden code-Blöcken in allen diesen initialisers/Methoden, und die gleiche situation ergibt sich in jedem Fall:

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

Mir ist klar, dass reinstantiating '.Ansicht die UIViewController ist fugly, kann mir jemand erklären, was ich falsch mache? Ich vermutete, ich könnte überwinden das Problem durch erste frame-Einstellung code in meine UIViewController um die Größe des UITextView einmal, und danach autoresizing würde so funktionieren, wie gewünscht.

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

... aber scheinbar der Ansicht.Rahmen ist nicht festgelegt, bis zu diesem Zeitpunkt, es muss nicht sein '.Größe' angegebenen Werte, so einmal textView bleibt klein.

Was ist der richtige Weg, das zu erreichen, was ich will? Muss ich explizit angeben, fullscreen Dimensionen über UITextView:initWithFrame um es zu füllen Ihre superview?

Wäre ich dankbar für jeden Rat Ihnen anbieten können.

InformationsquelleAutor der Frage KomodoDave | 2011-02-07

Schreibe einen Kommentar