willRotateTo 界面方向在通用主从应用程序中不起作用
Posted
技术标签:
【中文标题】willRotateTo 界面方向在通用主从应用程序中不起作用【英文标题】:willRotateToInterfaceOrientation not working in Universal MasterDetail app 【发布时间】:2012-09-10 17:43:26 【问题描述】:所以我有这个代码来更改我的 UIImage 视图上的图像。我在 iPad 和 iPhone 上都有一个非常奇怪的行为。
这段代码工作得很好,给了我想要的结果:
- (void)viewWillAppear:(BOOL)animated
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight||
[[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft)
self.backgroundView.image = [UIImage imageNamed:@"roadBackgroundLandscape.png"];
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait||
[[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown)
self.backgroundView.image = [UIImage imageNamed:@"roadBackgroundPortrait.png"];
但是放在另一个方法中的完全相同的代码并没有给我想要的结果!它只拍摄肖像照片并将其用于风景。至于纵向,它使用完全不同的图像!
-(void)willRotateToInterfaceOrientation:(UIInterfaceOrientation)
toInterfaceOrientation duration:
(NSTimeInterval)duration
if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeRight||
[[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationLandscapeLeft)
self.backgroundView.image = [UIImage imageNamed:@"roadBackgroundLandscape.png"];
else if ([[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortrait||
[[UIApplication sharedApplication] statusBarOrientation] == UIInterfaceOrientationPortraitUpsideDown)
self.backgroundView.image = [UIImage imageNamed:@"roadBackgroundPortrait.png"];
[super willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration];
当我为self.backgroundView.image = [UIImage imageNamed:@"roadBackgroundPortrait.png"];
行设置断点时,如果方向是landscape,它会触发即使!
我在开发通用应用方面没有太多经验。我刚刚采用了 Apple 的 Master-Detail App Template 并对其进行了一些修改。这里有什么问题?提前致谢!
【问题讨论】:
【参考方案1】:使用 toInterfaceOrientation 在 willRotateToInterfaceOrientation 方法中确定方向。当这个函数被调用时 statusBarOrientation 仍然是旧的。
供您参考 didRotateFromInterfaceOrientation 在设备旋转更改后调用。如果你在这里查询 statusBarOrientation 应该是正确的。
【讨论】:
以上是关于willRotateTo 界面方向在通用主从应用程序中不起作用的主要内容,如果未能解决你的问题,请参考以下文章