我使用
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的旋转方法.因此,您应该在运行时处理所有系统差异,而不是编译时,除非您是故意为两个不同的系统编译两个不同版本的应用程序.