2013-09-08 7 views
1

Я никогда не делал этого раньше - изменяя UIView ViewController, так что, хотя он работает отлично, я не уверен, что это хорошая идея - если бы это было возможно приводят к любым серьезным ошибкам. Он использует Storybards но viewLandscape загружается из nibЗамена UIViews, когда экран вращается в том же контроллере просмотра

Так я начинаю удерживать указатель на текущий вид в ViewDidLoad, я полагаю, что первый вид, когда viewDidLoad это портрет, как я могу быть абсолютно уверен в этом? затем я инициализирую ландшафтный вид от nib.

// Assumes UIView loaded at start is portrait 
self.viewPortrait = [[UIView alloc]initWithFrame:self.view.bounds]; 
self.viewPortrait = self.view; 

UIView *landscapeView = [[[NSBundle mainBundle] loadNibNamed:@"LandscapeView" owner:self options:nil] objectAtIndex:0]; 
NSLog(@"view %@", landscapeView); 
self.viewLandscape = [[UIView alloc]initWithFrame:landscapeView.bounds]; 
self.viewLandscape = landscapeView; 

Теперь я установил, какой вид показать в соответствии с направлением интерфейса, довольно просто! но это все, о чем я должен знать? Еще одна вещь, у меня есть ярлык на альбомную, как я получаю указатель на эту метку в этом ViewController (Pointer от кончика пера к View Controller для раскадровки зрения)

-(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration 
{ 
    NSLog(@"will rotate"); 
    switch (toInterfaceOrientation) 
    { 
     case UIInterfaceOrientationPortrait: 
     case UIInterfaceOrientationPortraitUpsideDown: 
      self.view = self.viewPortrait; 
      break; 

     case UIInterfaceOrientationLandscapeLeft: 
     case UIInterfaceOrientationLandscapeRight: 
      self.view = self.viewLandscape; 
      break; 
    } 
} 

ответ

3

Обычный способ сделайте это, чтобы иметь другой контроллер представления для горизонтального и представить этот контроллер вида из вашего вертикального VC с перекрестным затуханием. Дополнительную информацию об этом можно найти в разделе «Создание альтернативного ландшафтного интерфейса» в редакторе View Controller Programming Guide.

+0

Спасибо! У меня были проблемы с моим решением, потому что у меня было два вида в контроллере панели вкладок, и когда я перешел на другое представление, повернул устройство и вернусь к этому представлению - будет загружен неправильный вид. И Apple сделала почти невозможным прогматическое изменение направления в iOS 6. Я потратил несколько часов, пытаясь понять это, прежде чем я сдался. –