2011-01-12 15 views
0

Früher als Controller Einrichtung programmatisch habe ich immer die Größe und Position des Wurzel UIView Element gesetzt (dh)Wird UIViewController root UIView Autosize?

// UIViewController -loadView 
CGRect viewFrame = CGRectMake(0, 20, 320, 460); 
UIView *view = [[UIView alloc] initWithFrame:viewFrame]; 
[self setView:view]; 
[view release]; 

Ich habe gerade bemerkt (und ich frage mich, ob jemand bestätigen kann), dass, wenn Ihre Zugabe der Wurzel UIView zu einem Controller, bei dem Sie die Größe oder Position nicht festlegen müssen, wenn der verfügbare Speicherplatz automatisch angepasst wird. (D)

// UIViewController -loadView 
UIView *view = [[UIView alloc] init]; 
[self setView:view]; 
[view release]; 

Ich verstehe, dass nachfolgende UIViews (das heißt UIButton, UILabel etc.) werden müssen positioniert und Größe, ich möchte nur sicherstellen, dass ich verstehe das Verhalten, das ich zur Zeit sehe.

Antwort

1

Die Größe des Rahmens der Ansicht wird geändert.

UIView *view1 = [[UIView alloc] init]; 
NSLog(@"ViewFrame before set:%@",NSStringFromCGRect(view1.frame)); 
[self setView:view1]; 
NSLog(@"ViewFrame after set:%@",NSStringFromCGRect(view1.frame)); 
[view1 release]; 

Aber ich konnte nichts in Dokumenten finden, die dies rechtfertigen.

+0

Sehr geschätzt, das ist sicherlich gut zu wissen. – fuzzygoat

0

Die Größe der Stammansicht eines beliebigen UIViewControllers wird von der übergeordneten Instanz dieses Controllers verwaltet, bei der es sich möglicherweise um einen anderen Controller oder ein anderes Fenster handelt. Es bestimmt die Größe automatisch. Wenn Sie beispielsweise UITabBarController erstellen, ermittelt es die Größe aller Stammsichten seiner untergeordneten Controller. Oder wenn Sie einen eigenen Containeransicht-Controller schreiben, muss er die Größe der Stammansichten seiner untergeordneten Controller bestimmen.

Siehe "View Management" in diesem Thema: UIViewController Class Reference

Verwandte Themen