Хорошо, это кажется, что должно быть относительно просто, но я гуглил к лучшему часть часа и, может казаться, не нахожу то, в чем я нуждаюсь.
У меня есть контроллер представления, который имеет несколько различных частей: фоновое представление, представление заголовка и несколько кнопок. Теперь, я хочу, чтобы заголовок и кнопки самовращались правильно (они делают, когда я возвращаю ДА из shouldAutorotateToInterfaceOrientation:), но ни при каких обстоятельствах не должен фоновое представление вращаться. Существует ли надлежащий способ сделать это?
Не знаю, как "правильно", но обходной путь - это создать фоновое изображение в обеих ориентациях и просто изменить вид фона. Хороший вопрос, однако - будет интересно посмотреть, что люди придумывают в качестве решения.
Есть еще одна работа, о которой я думал...
Вы можете использовать:
bgView.transform = CGAffineTransformMakeRotate(angle);
Вы должны вычислить угол в соответствии с ориентацией (это может быть M_PI/2, M_PI или 3*M_PI/2)....
Вы можете использовать эту функцию внутри - (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
, а также обернуть его анимацией, которая будет анимировать в течение точно такой же продолжительности, как и анимация ориентации экрана:
- (void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
// Decide what will be the angle...
// Make the animation
[UIView beginAnimations:@"orientationChange" context:nil];
[UIView setAnimationDuration: duration];
bgView.transform = CGAffineTransformMakeRotate(angle);
[UIView commitAnimations];
}
Заметьте, что размер вида может быть изменен из-за верхнего бара....
Заметьте также, что я сам никогда не пробовал...