iphone – 我想在ios(ios 5和ios 6)中仅以横向方向进行我的应用

我使用
Xcode 4.5.1并使用这个条件

#define IOS_OLDER_THAN_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] < 6.0 )
#define IOS_NEWER_OR_EQUAL_TO_6 ( [ [ [ UIDevice currentDevice ] systemVersion ] floatValue ] >= 6.0 )


#ifdef IOS_OLDER_THAN_6
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation{
    [image_signature setImage:[self resizeImage:image_signature.image]];
    return (toInterfaceOrientation == UIInterfaceOrientationLandscapeLeft);
}
#endif
#ifdef IOS_NEWER_OR_EQUAL_TO_6
-(BOOL)shouldAutorotate {
    return YES;
}
- (NSUInteger)supportedInterfaceOrientations {
    [image_signature setImage:[self resizeImage:image_signature.image]];
    return UIInterfaceOrientationMaskLandscapeLeft;
}
#endif

我在info.plist中添加了密钥.

<key>UISupportedInterfaceOrientations</key>
    <array>
        <string>UIInterfaceOrientationLandscapeRight</string>
        <string>UIInterfaceOrientationLandscapeLeft</string>
    </array>

并设置支持界面方向

如果我在info.plist中添加了密钥并设置了支持方向而没有使用下面的代码,则应用程序在ios 5.0中不起作用

这段代码是有效的,但我想使用小替代概念….请帮帮我..

提前致谢!!

最佳答案 你的方法不健康.只有#ifdef语句为真时才会编译预处理程序块.您所做的是使预处理器语句依赖于运行时参数.

您可以尝试删除所有预处理器块.使部署目标5.0.

编辑:仅供参考,这些方法是回调方法,因此如果需要,它们将被系统调用. iOS5将调用shouldAutorotateToInterfaceOrientation方法同样iOS6将相应调用supportedInterfaceOrientations和iOS6的旋转方法.因此,您应该在运行时处理所有系统差异,而不是编译时,除非您是故意为两个不同的系统编译两个不同版本的应用程序.

点赞