11

Mam niestandardowy UIViewController i odpowiedni widok w pliku stalówki. Widok jest bezpośrednio dodawany do obiektu UIWindow.Konstruktor interfejsów: zmiana rozmiaru widoku z NIB

[window addSubview:customViewController.view]; 

Rozmiary okna i widok są domyślne (480x320 i 460x320 odpowiednio).

Kiedy tworzę CustomViewController wewnątrz pliku nib i sprawdzić "Resize View From NIB" w IB Atrybuty Zakładka wszystko działa dobrze.

Ale gdy tworzę CustomViewController programmmatically z initWithNibName wiadomości widok nie jest umieszczony na szybie poprawnie. Na dole jest pusty pasek. Jego wysokość to 20 pikseli. Widzę, że to z powodu przesunięcia paska stanu.

IB obsługuje to za pomocą "Zmiana rozmiaru widoku z NIB". Jak emulować programowo?

Wygląda na to, że IB używa jakiejś niestandardowej podklasy UIViewController. Tak więc pytanie: , w jaki sposób zaimplementowano tam "Resize View From NIB"?

Odpowiedz

1

Kiedy chcę, aby upewnić się, że widok obejmuje cały ekran, mogę zrobić coś takiego:

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

Odczuwalna hack, więc robię to tylko w ostateczności, kiedy mogę” t uzyskać widok, aby zachowywać się inaczej :)

+0

Próbowałem, ale to nie działa dla mnie. Pojawi się ten sam pasek u dołu. – alexey

+1

[[self view] setFrame: CGRectMake (0, 20, 320, 480)]; To działa, ale wygląda na coś w rodzaju hardcoding. [[UIScreen mainScreen] ograniczenia]] zwraca (0, 0, 320, 480). – alexey

+0

Zamiast tego należy użyć applicationFrame: self.view.frame = {CGPointZero, [UIScreen mainScreen] .applicationFrame.size]}; – Francescu

Powiązane problemy