【发布时间】:2011-12-22 13:01:59
【问题描述】:
我想以横向启动我的应用程序,在应用程序启动后我想支持所有方向。我在 info.plist 中将“初始界面方向属性”设置为“横向(左主页按钮)”。
即使我将 iPad 置于横向模式,我的应用程序也会以纵向模式启动。我该如何解决这个问题?
谢谢,
阿克谢
【问题讨论】:
标签: objective-c ipad
我想以横向启动我的应用程序,在应用程序启动后我想支持所有方向。我在 info.plist 中将“初始界面方向属性”设置为“横向(左主页按钮)”。
即使我将 iPad 置于横向模式,我的应用程序也会以纵向模式启动。我该如何解决这个问题?
谢谢,
阿克谢
【问题讨论】:
标签: objective-c ipad
默认情况下,plist 中的方向设置在 Xcode 4.x 中如下所示
如下图改变顺序(或者根据你的需要,item 0 是应用默认启动的方向)
【讨论】:
您可以在应用的 Info.plist 文件中设置 UIInterfaceOrientation 以设置“初始界面方向”(在编辑 plist 时显示的键不显示原始值/键。
其中指定: UI界面方向 | “初始界面定位” |指定应用程序用户界面的初始方向。有关详细信息,请参阅“UIInterfaceOrientation”。
然后如果你没有设置 UILaunchImageFile 属性,它会显示默认的启动图像: “您将在 Info.plist 文件中包含 UILaunchImageFile~ipad 键并将其值设置为 MyiPadImage.png。然后您将在包中包含 MyiPadImage-Portrait.png 文件和 MyiPadImage-Landscape.png 文件以指定相应的启动图像。”
【讨论】:
您可以在 UIViewController 上实现 - (BOOL)shouldAutorotateToInterfaceOrientation:,并在设备处于横向位置时返回 true。
然后,一旦你想支持所有方向,让:- (BOOL)shouldAutorotateToInterfaceOrientation: 通过在 UIViewController 中的 - (void)viewDidAppear: 之后设置一个布尔标志来做出适当的响应。
有关如何实施 shouldAuto 的进一步阅读...请参阅my answer 以解决类似问题。
【讨论】:
如果您总是希望您的应用程序以横向启动,您应该从“支持的界面方向”(在 plist 中,或在项目设置 > 摘要(在 Xcode 4 中)或项目设置 > 常规(在 Xcode 5) 中。
如果您希望稍后(发布后)提供肖像:
在 iOS 5(及更低版本)中:
在你的根视图控制器中实现- (BOOL)shouldAutorotateToInterfaceOrientation: 以返回YES 用于您想要允许的任何方向(在这种情况下,UIInterfaceOrientationPortrait、UIInterfaceOrientationLandscapeLeft 和UIInterfaceOrientationLandscapeRight。这将覆盖您不允许的任何界面方向在“支持的界面方向”中
在 iOS 6(及更高版本)中:
在您的应用程序委托中,实现- (NSUInteger)application:supportedInterfaceOrientationsForWindow: 并返回UIInterfaceOrientationMask 用于我们希望在启动后允许的方向(在本例中为UIInterfaceOrientationMaskAllButUpsideDown)。然后,在根视图控制器中,实现- (NSUInteger)supportedInterfaceOrientations,返回应用程序当前状态下应该可用的任何方向。
如果您需要一些示例代码或更多详细信息,可以查看有关主题的my blog post。
【讨论】: