2012-07-18 93 views
2

我已經實現了這個代碼來定義我的常數:Objective-C的預處理指令發出

#ifdef UI_USER_INTERFACE_IDIOM 
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) 
#else 
#define IS_IPAD() (false) 
#endif 

#if (IS_IPAD) 
CGFloat const scrollSizeWidth = 768.0f; 
CGFloat const scrollSizeHeight = 1004.0f; 
#else 
CGFloat const scrollSizeWidth = 320.0f; 
CGFloat const scrollSizeHeight = 460.0f; 
#endif 

但它總是顯示我的變量320.0f460.0f

UPDATE: 作爲K3A用戶發現UI_USER_INTERFACE_IDIOM並不適用於iOS 8.3工作,因爲它不是不再是一個定義它是一個靜態的內聯。

檢查這個答案還有: link

+0

#ifdef UI_USER_INTERFACE_IDIOM在Xcode 6.3+中被破壞,因爲它不再是預處理器定義 – k3a 2015-04-26 14:44:50

+0

@ k3a哦,shooot,真的嗎?我還沒有檢查過它 – 2015-04-26 16:22:38

+0

是的。我注意到它是因爲我的應用程序在使用Xcode 6.3+編譯時加載了iPhone筆尖。下面是符號的新定義:靜態內嵌UIUserInterfaceIdiom UI_USER_INTERFACE_IDIOM(){ 返回([[的UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] [[的UIDevice currentDevice] userInterfaceIdiom]: UIUserInterfaceIdiomPhone); } – k3a 2015-04-26 16:59:31

回答

3

變化:

#ifdef UI_USER_INTERFACE_IDIOM 
#define IS_IPAD() (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) 
#else 
#define IS_IPAD() (false) 
#endif 

#ifdef UI_USER_INTERFACE_IDIOM 
#define IS_IPAD (UI_USER_INTERFACE_IDIOM == UIUserInterfaceIdiomPad) 
#else 
#define IS_IPAD (false) 
#endif 
+0

噢,我明白了,非常感謝你! – 2012-07-18 12:09:51

+0

對不起它的工作,但現在我只得到768.0f 1004.0f;我的意思是在任何時候 – 2012-07-19 15:13:45

2

如果UIUserInterfaceIdiomPad不是一個預處理符號,那麼就不能在預處理使用條件句。