【发布时间】:2011-12-19 09:50:13
【问题描述】:
我有一个电子书阅读器应用程序,我需要根据页面布局以编程方式调整设备方向...即,设备应支持某些页面的所有方向,而仅支持某些其他页面的横向。无论如何我可以通过编程方式强制改变方向
【问题讨论】:
-
UIApplication 中的
setStatusBarOrientation:animated怎么样?
我有一个电子书阅读器应用程序,我需要根据页面布局以编程方式调整设备方向...即,设备应支持某些页面的所有方向,而仅支持某些其他页面的横向。无论如何我可以通过编程方式强制改变方向
【问题讨论】:
setStatusBarOrientation:animated 怎么样?
你可以使用jbat100的答案加上在UIApplication中调用setStatusBarOrientation:animated来达到效果。
【讨论】:
请注意,自 iOS 6.0 起,此行为已更改。如需更多信息,请参阅:Autorotate in iOS 6 has strange behaviour
要点是 should/will/did/etc 已被弃用,取而代之的是更简洁、更动态的实现。我们都应该感谢这一点。
【讨论】:
您不能将设备方向强制为某个值,系统会告诉您设备的方向,而不是相反。您可以使用CGAffineTransform 等(相关帖子here)旋转您的视图。
【讨论】:
实际上你可以强制任何旋转。至少我能够做到。我使用的解决方案:https://stackoverflow.com/a/10146270/894671
【讨论】:
这适用于我在 Xcode 6 和 5 上。
- (BOOL)shouldAutorotate {return YES;}
- (NSUInteger)supportedInterfaceOrientations {return (UIInterfaceOrientationMaskPortrait);}
【讨论】:
NSNumber *value = [NSNumber numberWithInt:UIInterfaceOrientationLandscapeRight];
[[UIDevice currentDevice] setValue:value forKey:@"orientation"];
这可以通过编程将设备方向设置为 LandscapeRight。
【讨论】: