我的主窗口中有一个背景图像,这样当我翻转视图时,它不是一个空白的白色屏幕,而是一个图像。我的问题是,当设备旋转时,此图像不会旋转。
编辑: 据我所知,当他指出我必须在这种情况下手动旋转背景图像时,Brett是正确的。如果它将来帮助其他人,这就是我如何轮换它。
内部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);
}
}
答案 0 :(得分:7)
我认为UIWindow将轮换事件传递给子控制器。该窗口应包含根视图控制器视图,然后将旋转事件消息传递给视图控制器以管理旋转。
您应该能够在应用委托中侦听这些事件并手动管理图像轮换。否则,只需将图像添加为根视图控制器的子视图。
答案 1 :(得分:0)
在rootViewController上确保实现此方法:
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation {
return YES;
}
rootViewController可能只是一个带有2个UIViews的简单UIVIew,一个用于背景图像视图,另一个用于主界面视图。