我使用宏来区分版本,但我不能强迫它正常工作。我用过:
#ifdef _IPHONE_4_0
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
#else
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
#endif
和
#if __IPHONE_OS_VERSION_MAX_ALLOWED < _IPHONE_4_0
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
#else
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
#endif
和
#if defined(__IPHONE_4_0)
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
#else
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
#endif
无论我使用什么版本 - 总是只调用其中一行。始终定义__IPHONE_4_0。有什么想法吗?
最诚挚的问候, 德米特里M。
答案 0 :(得分:2)
#if…
处理器指令在编译时解析。只要您编译4.0 SDK,就会始终选择4.0变体。
如果您打算让该应用适用于&lt; 4.0,你应该使用运行时检查:
UIApplication* app = [UIApplication sharedApplication];
if ([app respondsToSelector:@selector(setStatusBarHidden:withAnimation:)])
[app setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
else
[app setStatusBarHidden:YES animated:YES];
答案 1 :(得分:-1)
一个小小的改变 -
以下代码应该有效:
#if __IPHONE_OS_VERSION_MAX_ALLOWED < __IPHONE_4_0
[[UIApplication sharedApplication] setStatusBarHidden:YES animated:YES];
#else
[[UIApplication sharedApplication] setStatusBarHidden:YES withAnimation:UIStatusBarAnimationFade];
#endif
Plz注意它是__IPHONE_4_0而不是_IPHONE_4_0