2010-07-31 43 views
1

所以我有一個真正有用的功能,當我製作設備特定的URL時,但我想將它放在全局頭文件中,以便任何類都可以使用它易iPhone-iPad設備類型在頭文件中的伎倆

- (NSString *)deviceType 
{ 
    NSString *deviceName = @"iphone"; 
    if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
    { 
     if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 
      deviceName = @"ipad"; 
     } 
     else { 
      deviceName = @"iphone4"; 
     } 
    } 
    return deviceName; 
} 

這可能是也可能不是這樣做的最佳方式,但我想知道如何獲取到一個全球性的標題,所以我可以做這樣的事情

NSString *deviceName = GETDEVICENAME; 

回答

0

明白了爲我工作的回答,

在全球頭文件Globals.h我放在

NSString* deviceType(); 
在Globals.m

我把修改的功能

NSString* deviceType() 
{ 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad){ 
     return @"ipad"; 
    } 
    else if([[UIScreen mainScreen] respondsToSelector:@selector(scale)]) 
    { 
     return @"iphone4"; 
    } 
    else{ 
     return @"iphone"; 

    } 
} 
+1

不清楚這是否真的做到了你想要的。我認爲運行iOS 4.0的3GS iPhone將顯示爲iPhone4。你可能想要檢查respondsToSelector和[UIScreen mainScreen] .scale == 2.0 – mtoy 2010-08-23 23:27:41

+0

你是對的,3GS確實對比例做出了響應 – PaulWoodIII 2010-08-24 09:19:02

+0

這個答案不正確,如上所述。 UIScreen的縮放屬性在iOS4.0中引入。因此,任何運行iOS4.0 +(ipod,iphone,iwhatever)的設備都將使用上述代碼作爲iphone4進行響應。我認爲一般來說,要確定某人正在使用的確切模型是錯誤的方法來將設計變爲明智的。這樣的代碼可能會破壞道路。 查看UIScreen的比例屬性文檔 http://developer.apple.com/library/ios/#documentation/UIKit/Reference/UIScreen_Class/Reference/UIScreen.html#//apple_ref/occ/instp/UIScreen/規模 – Jonny 2011-02-23 02:47:31

0

#define GETDEVICENAME [whatever deviceType]也許?

有是與功能的問題,雖然,在3.2 UIScreen不按比例(至少沒有公開回應。我不會依賴於檢查的iPad。

+0

這樣切出由右if語句的UI_USER_INTERFACE_IDIOM?如果我早點返回,Logic仍然是合理的 – PaulWoodIII 2010-07-31 06:03:09

0

在項目中應該是一個名爲%PROJECT%_Prefix.pch。

您在該文件將是項目中的所有文件訪問的任何頭。

+0

我已經啓動了Global頭文件並且正在運行,但是需要關於函數的幫助 – PaulWoodIII 2010-07-31 06:01:39