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