iPhone 4检测......在模拟器上

时间:2010-07-05 14:19:02

标签: iphone ipad

我需要检测用户是否使用iPhone 4,但我需要在模拟器上工作(因为Apple忘记了我的国家,很快就没有iPhone 4的迹象)。

我找到了这个 http://www.clintharris.net/2009/iphone-model-via-sysctlbyname/

但是在模拟器上运行它并没有检测到正确的版本。我的意思是,Xcode 3.2.3有两个模拟器(3G / 3GS和4)。我期待检测方法告诉我正在使用的正确版本......但是它告诉我“iphone模拟器”......

有没有办法做到这一点? 感谢。

6 个答案:

答案 0 :(得分:4)

您无需检测系统版本。

假设图像名为foo.png,那么您只需要添加

  • foo~ipad.png for iPad
  • foo@2x~iphone.png适用于iPhone 4

并使用[UIImage imageNamed:@"foo.png"]加载图片。有关详细信息,请参阅iPhone Application Programming Guide

答案 1 :(得分:1)

我认为最好检查一下您需要的功能,而不是特定的设备。这肯定是Apple建议的,因为它可以在新设备到来时为您提供保险!

在这种情况下,是否可以检查屏幕大小,并使用它来确定是否需要缩放图像?

[[UIScreen mainScreen] bounds]

答案 2 :(得分:1)

  

硬件可用性和状态

     

如果是硬件功能(例如,   陀螺仪不可用于   设备,调用相关的启动方法   该功能无效。您可以   找出是否有硬件功能   通过检查可用或激活   适当的财产;例如,为   陀螺仪数据,你可以查看   陀螺仪的价值可用或   gyroActive属性。

使用

@property(readonly, nonatomic, getter=isGyroAvailable) BOOL gyroAvailable
CMMotionManager

答案 3 :(得分:0)

@property (nonatomic, readonly, retain) NSString *systemVersion;
//  It equal to @"4.0" on iOS 4.0

@property (nonatomic, readonly, retain) NSString *model;
// Possible examples of model strings are @”iPhone” and @”iPod touch”
UIDevice

答案 4 :(得分:0)

来自Erica Sudan:

- (NSString *) platform
{
  size_t size;
  sysctlbyname("hw.machine", NULL, &size, NULL, 0);
  char *machine = malloc(size);
  sysctlbyname("hw.machine", machine, &size, NULL, 0);
  /*
  Possible values:
  "iPhone1,1" = iPhone 1G
  "iPhone1,2" = iPhone 3G
  "iPhone2,1" = iPhone 3GS
  "iPhone3,1" = iPhone 4
  "iPod1,1"   = iPod touch 1G
  "iPod2,1"   = iPod touch 2G
  */
  NSString *platform = [NSString stringWithCString:machine];

  free(machine);
  return platform;
}

或者,如果您只是需要检测它是否为高分辨率屏幕,您可以使用:

UIScreen *screen = [UIScreen mainScreen];
BOOL isHighRes;

if ([screen respondsToSelector:@selector(scale)]) {
    isHighRes = ([screen scale] > 1);
} else {
    isHighRes = NO;
}

答案 5 :(得分:-1)

迈克,你可以通过使用预处理器指令知道用户是否正在使用iPhone 4。例如:

#ifdef __IPHONE_4_0
   // Do some work for iPhone 4 device
#else
   // Do some work for non iPhone 4 device
#endif

我希望它可以帮到你。