2012-12-19 8 views
6

Mam pytanie o przejście ekranu.Czy presentViewController zmienia view.frame?

tranzytu ekran, często używam metody presentViewController.

NextViewController *nextViewController = [[NextViewController alloc] init]; 
nextViewController.view.frame = CGRectMake(10, 10, 200, 400);  
[self presentViewController:nextViewController animated:YES completion:nil]; 

Jednak zaimplementowane ustawienie view.frame nie jest stosowane.

Poniższy kod działa poprawnie.

NextViewController *nextViewController = [[NextViewController alloc] init]; 
[self presentViewController:nextViewController animated:YES completion:nil]; 
nextViewController.view.frame = CGRectMake(10, 10, 200, 400); 

Jaka jest różnica tego kodu? Czy zmieniono view.frame w metodzie presentViewController?

Dzięki.

Odpowiedz

5
NextViewController *nextViewController = [[NextViewController alloc] init]; 
nextViewController.view.frame = CGRectMake(10, 10, 200, 400);  
[self presentViewController:nextViewController animated:YES completion:nil]; 

Powyższy kod nie działa, ponieważ ustawiasz widok następnej kontrolkiViewController, która nie została jeszcze utworzona.

więc w następnym kodzie załadować kontroler widoku, a następnie zmienić ramkę załadowanego widzenia.

========================= EDIT ==================== =======

Jeśli chcesz ustawić ramkę w kontrolerze widoku bezpośrednio następnie powiązać widoku z IBOutlet a potem w

- (void) viewDidAppear:(BOOL)animated 
{ 
     //set the frame here 
     self.myView.frame = CGRectMake(10, 10, 200, 400); 
} 

Nadzieja to pomaga :)

+0

Ale, nie mogę ustawić view.frame w NextViewController, jak następuje. [super viewDidLoad]; self.view.frame = CGRectMake (10, 10, 200, 400); – akiniwa

+0

Jeśli się nie mylę, to czy ustawiasz ramkę w funkcji viewDidLoad? –

+0

Próbowałem w obie strony. "nextViewController.view.frame" w rootViewController i "self.view.frame" po "[super viewDidLoad];" w nextViewController. – akiniwa

1

self.view nie jest tworzony przed przedstawieniem kontroler widoku.

IE) nextViewController.view.frame nie jest ważny przed [siebie presentViewController: nextViewController animowany: TAK realizacji: zerowe];

0

prezent nextViewController, a następnie tylko Ty możesz aktualizować swoje różne właściwości. Wykonanie tego przed załadowaniem widoku do widoku nie powiedzie się. Przedstaw widok, a następnie zaktualizuj go.

Powiązane problemy