2012-03-08 46 views
0

我很好奇,爲什麼這個代碼將無法正常工作的設備檢測:#如果在iPhone SDK

#if UI_USER_INTERFACE_IDIOM//() == UIUserInterfaceIdiomPad 
@implementation UINavigationBar (Custom height) 

- (CGSize)sizeThatFits:(CGSize)size { 
    CGSize newSize = CGSizeMake(self.frame.size.width,44+BreadCrumbBarHeight-1); 
    return newSize; 
}  

@end 
#endif 

任何想法?

+0

的可能重複http://stackoverflow.com/questions/2576356/how-做一贈的UI用戶界面,成語到工作與-iphone-OS-SDK-3-2 – elp 2012-03-08 11:44:57

回答

4

UI_USER_INTERFACE_IDIOM()是爲運行時評估設計(並定義)的宏! 將其用於編譯時評估將失敗。

它被定義爲:

#define UI_USER_INTERFACE_IDIOM() ([[UIDevice currentDevice] respondsToSelector:@selector(userInterfaceIdiom)] ? [[UIDevice currentDevice] userInterfaceIdiom] : UIUserInterfaceIdiomPhone) 

呼叫[..的UIDevice將失敗在編譯時計算