2013-08-23 10 views
5

Sto costruendo un'app iOS 6 e 7 a tema scuro. Capisco che posso chiamare [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; per far sì che la barra di stato di iOS 7 soddisfi un'applicazione a tema di colore scuro.#ifdef #else #endif scegliere la versione e la funzione di sdk per iOS?

Il problema è che ho intenzione di inviare la mia app all'App Store e attualmente Xcode 5 non è pronto per questo, quindi devo usare Xcode 4.6.x per fare questa operazione. Tuttavia con Xcode 4.6, non sono in grado di compilare il nuovo metodo da iOS 7. Penso di dover fare qualcosa come "" if ios7 "", quindi fare [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; e riposizionare la finestra dell'applicazione.

io sto cercando di fare questo con #ifdef ... #else ... questo codice è [[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent]; all'interno del viewDidLoad.

Qualcuno potrebbe aiutare a capire come utilizzare #ifdef ... con il metodo in alcune funzioni.

Grazie mille !!!!

+1

Ho appena risposto a questa qui: http://stackoverflow.com/questions/18404746/disable-clang-error-with-pragma/18406309#18406309 – rmaddy

+0

Ho appena risolvo il mio problema. grazie – HYC

+0

Il mio amico, apple non accetterà alcuna build fatta dalla versione xcode inferiore a 5. Quindi prova ad usare xcode 5 e versioni successive. –

risposta

20

Anche se non sono sicuro al 100% di poter rispondere pienamente a questo senza violare la NDA, farò del mio meglio per indirizzarti nella giusta direzione.

È necessario utilizzare i __IPHONE_* # definisce in Availability.h

#if __IPHONE_OS_VERSION_MAX_ALLOWED >= __IPHONE_6_0 
    // iOS 6+ code here 
#else 
    // Pre iOS 6 code here 
#endif 

Si prega di essere consapevole del fatto che #if e #ifdef determinerà quale codice è compilato , non è un meccanismo di rilevamento di runtime.

È possibile accedere facilmente a Availability.h utilizzando Apri rapidamente e digitando Disponibilità.

+0

Non c'è niente nella risposta che è coperto da una NDA. Perché lo penseresti? Sono coperte solo le API specifiche di iOS 7. – rmaddy

+0

Sicuramente il contenuto di Availability.h come fornito nell'SDK di iOS 7 è coperto dalla NDA? Indipendentemente da questa risposta dovrebbe essere in grado di essere adattato per iOS 7 facilmente senza nemmeno guardare il file di intestazione. Ho fatto +1 e ho votato l'altra risposta però :) –

2

un'occhiata al respondsToSelector

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

Questo non aiuta. Il compilatore si lamenterà ancora sulla linea che effettivamente chiama il metodo. – rmaddy

+0

Non se il destinatario è di tipo 'id' o si usa' performSelector: withObject: '. Ad ogni modo, il metodo '# if' qui sopra è probabilmente più ordinato. – jbg

Problemi correlati