11

Ich habe eine benutzerdefinierte UIViewController und eine entsprechende Ansicht in einer NIB-Datei. Die Ansicht wird dem UIWindow direkt hinzugefügt.Interface Builder: Größe der Ansicht von NIB

[window addSubview:customViewController.view]; 

Größen des Fensters und der Ansicht sind Standard ( 480x320 und 460x320 entsprechend).

Als ich CustomViewController in der Nib-Datei erstellen und überprüfen „Größe ändern Ansicht von NIB“ in IB Registerkarte Attribute alles gut funktioniert.

Aber wenn ich CustomViewController programmmatically mit initWithNibName Nachricht erstellen wird die Ansicht nicht korrekt auf dem Fenster positioniert. Unten ist ein leerer Streifen. Seine Höhe beträgt 20px. Ich sehe es wegen der Statusleiste Offset.

IB behandelt, dass mit "Größe von NIB anzeigen". Wie programmiere ich das?

Es scheint, dass IB einige benutzerdefinierte Unterklasse von UIViewController verwendet. Also die Frage: Wie ist dort "Resize View From NIB" implementiert?

Antwort

1

Wenn ich die Ansicht, um sicherzustellen, will den gesamten Bildschirm erstreckt, kann ich so etwas wie diese:

- (void) viewWillAppear: (BOOL) animated 
{ 
    [super viewWillAppear:animated]; 
    [[self view] setFrame:[[UIScreen mainScreen] bounds]]; 
} 

Man fühlt sich wie ein Hack, so dass ich es nur als letztes Mittel, wenn ich kann‘ t bekommen die Aussicht, sich sonst zu verhalten :)

+0

Versucht, aber es funktioniert nicht für mich. Derselbe Streifen am unteren Rand erscheint. – alexey

+1

[[Selbstansicht] setFrame: CGRectMake (0, 20, 320, 480)]; Das funktioniert, aber sieht aus wie eine Art von Hardcoding. [[UIScreen mainScreen] Grenzen]] gibt (0, 0, 320, 480) zurück. – alexey

+0

Sie sollten stattdessen ApplicationFrame verwenden: self.view.frame = {CGPointZero, [UIScreen mainScreen] .applicationFrame.size]}; – Francescu

Verwandte Themen