问题
I am buliding a dark themed iOS 6 and 7 app. I understand I can call [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
to make the iOS 7 status bar suit a dark color theme application.
The problem is I am going to submit my app to the App Store and currently Xcode 5 is not ready for that, so I have to use Xcode 4.6.x to do this task. However with Xcode 4.6, I am not able to compile the new method from iOS 7. I think I have to do something like ""if ios7"" then do [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
and reposition my application window.
I am trying to do this with #ifdef
... #else
...
this code is [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
inside the viewDidLoad
.
Could anyone help to understand how to use #ifdef
... with the method in some functions.
Thanks a lot!!!!
回答1:
While I'm not 100% sure I can fully answer this without breaching NDA, I'll do my best to point you in the right direction.
You need to use the __IPHONE_*
#defines in Availability.h
#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0
// iOS 6+ code here
#else
// Pre iOS 6 code here
#endif
Please be aware that #if
and #ifdef
will determine what code is compiled, it is not a runtime detection mechanism.
You can easily access Availability.h by using Open Quickly and typing in Availability.
回答2:
take a look to respondsToSelector
[delegate respondsToSelector:@selector(myMethod:)]
来源:https://stackoverflow.com/questions/18406622/ifdef-else-endif-choose-ios-sdk-version-and-function