При чтении примера кода я нашел некоторый код об изменении ориентации.Интересно то, что transform свойство self.view присваивается со значением в последовательности.Логически кажется, что первое назначение не имеет никакого эффекта, поскольку оно перезаписывается следующим назначением.
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration
{
if (UIInterfaceOrientationPortrait == toInterfaceOrientation)
{
self.view = portraitView;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(0));
self.view.bounds = CGRectMake(0, 0, 320, 480);
} else if (UIInterfaceOrientationLandscapeLeft == toInterfaceOrientation) {
self.view = landscapeView;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(-90));
self.view.bounds = CGRectMake(0, 0, 480, 320);
} else {
self.view = landscapeView;
self.view.transform = CGAffineTransformIdentity;
self.view.transform = CGAffineTransformMakeRotation(degreesToRadians(90));
self.view.bounds = CGRectMake(0, 0, 480, 320);
}
}
В документе сказано, что метод willAnimateRotationToInterfaceOrientation вызывается до того, как анимация ориентации действительно имеет место,
Итак, присвоение self.view.transform на самом деле работает как выталкивание значения в стек?или как Cocoa Touch узнает, что вид должен быть сначала установлен на CGAffineTransfrmIndentity , а затем на другое значение?