Изменение вида с различной ориентацией
Вот моя проблема: в моем приложении есть панель инструментов, где вы можете переключаться между видами. Основной или, по крайней мере, тот, что при запуске, находится в альбомном режиме, а если вы перейдете к любому другому виду, то в портретном. Проблема возникает, когда вы пытаетесь вернуться к первому (пейзаж), вид появляется в портрете, поэтому все виды отображаются неправильно. (Это более или менее ясно? извините, если кажется грязным). Какой-то код у меня здесь:
V1Controller:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
V2Controller:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
-(IBAction)goToV1 {
V1Controller *v1 = [[V1Controller alloc] init];
[self.view.superview addSubview:v1.view];
}
Может быть и так что-то с объектом v1 перед добавлением вида? Не знаю, мне нужна твоя помощь.
Проблема решена В переходе вида я пропустил одно предложение, удалить текущий вид из супервизора. И еще то, что говорил @Брэд. Спасибо.
-(IBAction)goToV1 {
V1Controller *v1 = [[V1Controller alloc] init];
[self.view.superview addSubview:v1.view];
[self.view removeFromSuperview];
}
1 ответ:
Когда вы говорите:
return (interfaceOrientation == UIInterfaceOrientationPortrait);
Вы позволяете ему поворачиваться только к портрету.
Если вы хотите повернуть к портрету , а затем обратно к ландшафту, просто верните "YES".
Та же логика применима, когда вы говорите
return (interfaceOrientation == UIInterfaceOrientationLandscapeLeft);
Вы фактически говорите: "пусть он будет повернут в одну сторону - но Никогда назад в другую сторону"