2010-07-31 75 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