Приложение для iOS - как сделать поворот главного окна - PullRequest
7 голосов
/ 15 августа 2011

У меня есть фоновое изображение в моем главном окне, так что когда я переворачиваю взгляды, это не пустой белый экран позади, а изображение.Моя проблема в том, что это изображение не вращается, когда устройство вращается.

Редактировать: Насколько я могу судить, Бретт был прав, когда указал, чтоМне пришлось бы повернуть фоновое изображение вручную в этом случае.На случай, если это поможет кому-то еще в будущем, вот как я повернул его.

Внутри myAppDelegate:

- (void) application:(UIApplication *)application
        willChangeStatusBarOrientation:(UIInterfaceOrientation)newStatusBarOrientation
        duration:(NSTimeInterval)duration
{
    if (newStatusBarOrientation == UIInterfaceOrientationPortrait)
        self.bgImage.transform      = CGAffineTransformIdentity;
    else if (newStatusBarOrientation == UIInterfaceOrientationPortraitUpsideDown)
        self.bgImage.transform      = CGAffineTransformMakeRotation(-M_PI);
    else if (UIInterfaceOrientationIsLandscape(newStatusBarOrientation))
    {
        float rotate    = ((newStatusBarOrientation == UIInterfaceOrientationLandscapeLeft) ? -1:1) * (M_PI / 2.0);
        self.bgImage.transform      = CGAffineTransformMakeRotation(rotate);
        self.bgImage.transform      = CGAffineTransformTranslate(self.bgImage.transform, 0, -self.bgImage.frame.origin.y);
    }
}

Ответы [ 2 ]

7 голосов
/ 15 августа 2011

Я думаю, что UIWindow передает события вращения дочерним контроллерам. Окно должно содержать представление корневого контроллера представления, а затем передавать сообщение о событии вращения в контроллер представления для управления вращением.

Вы должны иметь возможность прослушивать эти события в делегате приложения и управлять поворотом изображения вручную. В противном случае просто добавьте изображение в качестве подпредставления корневого контроллера представления.

0 голосов
/ 15 августа 2011

На вашем rootViewController убедитесь, что вы реализуете этот метод:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}

Ваш rootViewController, вероятно, будет просто UIVIew с 2 UIViews, один для просмотра фонового изображения, а другой для представления основного интерфейса.

...