Я хочу, чтобы реализовать свой собственный путь autorotating интерфейса: Код:Пользовательские авторотации iPhone SDK
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
NSLog(@"should!");
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.4];
if (interfaceOrientation == UIInterfaceOrientationLandscapeRight) {
trash.transform = CGAffineTransformMakeRotation(M_PI*0.5);
}
else if (interfaceOrientation == UIInterfaceOrientationLandscapeLeft) {
trash.transform = CGAffineTransformMakeRotation(-M_PI*0.5);
}
else if (interfaceOrientation == UIInterfaceOrientationPortraitUpsideDown) {
trash.transform = CGAffineTransformIdentity;//CGAffineTransformMakeRotation(M_PI);
}
else {
trash.transform = CGAffineTransformIdentity;
}
[UIView commitAnimations];
return NO;
}
Как вы видите, что я имею в UIView (на самом деле UIImageView) - мусор, и я его вращения используя CGAffineTransformMakeRotation при изменении ориентации интерфейса. Он отлично работает, за исключением того, что метод никогда не вызывается, когда ориентация интерфейса является портфолио по умолчанию (сверху вниз работает). Таким образом, мусор поворачивается к предыдущей ориентации, а не по умолчанию. Я немного беспокоюсь о комментарии над методом (автоматически добавляется при создании UIViewController), который говорит «разрешить ориентацию, отличную от ориентации по умолчанию».
Когда я возвращаю YES вместо NO, конечно, метод вызывается для каждой ориентации, но я не хочу анимировать весь интерфейс, а только некоторые элементы.
Справка Plz.