2013-08-23 6 views
5

Ich baue eine dunkle iOS 6 und 7 App. Ich verstehe, dass ich [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; anrufen kann, um den Statusbar-Anzug für iOS 7 zu einem dunklen Farbschema zu machen.#ifdef #else #endif wähle iOS SDK Version und Funktion?

Das Problem ist, ich werde meine App in den App Store einreichen und Xcode 5 ist derzeit nicht dafür bereit, also muss ich Xcode 4.6.x verwenden, um diese Aufgabe zu erledigen. Aber mit Xcode 4.6 kann ich die neue Methode nicht aus iOS 7 kompilieren. Ich denke, ich muss etwas wie "if ios7" machen, dann mache ich und positioniere mein Anwendungsfenster neu.

Ich versuche, dies zu tun mit #ifdef ... #else ... dieser Code ist [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; innerhalb des viewDidLoad.

Konnte jemand helfen zu verstehen, wie man #ifdef ... mit der Methode in einigen Funktionen verwendet.

Vielen Dank !!!!

+1

ich das gerade hier beantwortet: http://stackoverflow.com/questions/18404746/disable-clang-error-with-pragma/18406309#18406309 – rmaddy

+0

Ich löse nur mein Problem. Danke – HYC

+0

Mein Freund, Apple wird keine Build von Xcode Version niedriger als 5 akzeptieren. Also versuchen Sie, xcode 5 und spätere Versionen zu verwenden. –

Antwort

20

Obwohl ich mir nicht 100% sicher bin, dass ich das vollständig beantworten kann, ohne die NDA zu verletzen, werde ich mein Bestes tun, um Sie in die richtige Richtung zu weisen.

Sie müssen die __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 

Bitte beachten Sie, dass die Verwendung #if und #ifdef werden feststellen, welcher Code kompiliert wird, es nicht zu einem Laufzeiterfassungsmechanismus ist.

Sie können Availability.h einfach aufrufen, indem Sie Schnell öffnen und Verfügbarkeit eingeben eingeben.

+0

Es gibt nichts in Ihrer Antwort, die durch eine NDA abgedeckt ist. Warum denkst du das? Nur iOS 7-spezifische APIs sind abgedeckt. – rmaddy

+0

Sicher ist der Inhalt von Availability.h, wie er im iOS 7 SDK geliefert wird, unter NDA gedeckt? Unabhängig davon sollte diese Antwort problemlos für iOS 7 angepasst werden können, ohne die Header-Datei zu betrachten. Ich habe +1 dafür gegeben und deine andere Antwort gewählt :) –

2

werfen Sie einen Blick auf respondsToSelector

[delegate respondsToSelector:@selector(myMethod:)] 
+3

Das hilft nicht. Der Compiler wird sich immer noch über die Zeile beschweren, die die Methode aufruft. – rmaddy

+0

Nicht, wenn der Empfänger vom Typ 'id' ist oder Sie 'performSelector: withObject:' verwenden. Wie auch immer, die obige "# if" -Methode ist wahrscheinlich aufgeräumter. – jbg

Verwandte Themen