在UIDevice currentDevice上引导我

时间:2011-01-04 05:17:01

标签: iphone iphone-sdk-3.0

我使用以下代码设置设备方向

[[UIDevice currentDevice] setOrientation:UIInterfaceOrientationLandscapeRight];

当我使用时,我收到了警告,我找到了以下代码来修复该警告。

@interface UIDevice (MyPrivateNameThatAppleWouldNeverUseGoesHere)
- (void) setOrientation:(UIInterfaceOrientation)orientation;
@end

现在我想知道的是......

应用程序商店是否可以接受此代码在应用程序中?

感谢您的帮助!

3 个答案:

答案 0 :(得分:6)

哦,上帝,不。你得到的警告是因为这不是一个readwrite属性;仅添加声明方法的类别将不允许您设置方向。 AppStore不仅不会接受它,它会在第一次调用时崩溃,因为没有访问器。 (好吧,它可能会崩溃。这里可能有一个未记录的API,在这种情况下你将被拒绝)。

答案 1 :(得分:2)

如果您尝试以编程方式旋转视图,则应查看shouldAutorotateToInterfaceOrientation,如果您只是希望App具有特定方向,请尝试使用plist中设置的UIInterfaceOrientation。

另一个有用的帖子: Forcing UIInterfaceOrientation changes on iPhone

答案 2 :(得分:0)

而不是设置方向,正确的方法是让用户在用户旋转手机时监听应用程序,然后返回YES或NO以指示应用程序实际应该旋转(即始终返回NO如果您希望应用程序始终保持其初始状态。)只要用户更改方向,就会自动调用shouldAutorotateToInterfaceOrientation:方法。

例如,在您的视图控制器中,实现该方法仅允许手机在横向右/左侧使用:

- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
    if (UIDeviceOrientationIsLandscape) { return YES };
    return NO;
}

您还需要将UIInterfaceOrientation标记添加到应用的info.plist文件中,并使用值UIInterfaceOrientationLandscapeRight来设置应用的默认方向(因此不会以纵向模式启动)。否则,默认值为纵向,用户必须倾斜手机才能使其达到预期的方向。