[英]iPhone 4 detection… on simulator
我需要檢測用戶是否正在使用iPhone 4,但是我需要在模擬器上使用它(因為Apple忘記了我的國家,並且很快就沒有iPhone 4的跡象)。
我發現了這個http://www.clintharris.net/2009/iphone-model-via-sysctlbyname/
但是在模擬器上運行它並不能檢測到正確的版本。 我的意思是,Xcode 3.2.3具有兩個模擬器(3G / 3GS和4)。 我期望檢測方法能夠告訴我所使用的正確版本...但是相反,它告訴我“ iphone模擬器” ...
有什么辦法嗎? 謝謝。
您無需根據情況檢測系統版本。
假設一個圖像名為foo.png
,那么您只需要添加
foo~ipad.png
為iPad foo@2x~iphone.png
於iPhone 4的foo@2x~iphone.png
並使用[UIImage imageNamed:@"foo.png"]
加載圖像。 有關詳細信息,請參見《 iPhone應用程序編程指南 》。
我認為最好檢查所需的功能,而不是檢查特定的設備。 這當然是Apple的建議,因為當新設備問世時,它可以為您提供保險!
在這種情況下,檢查屏幕尺寸並使用它來確定是否需要縮放圖像是否可行?
[[UIScreen mainScreen] bounds]
硬件可用性和狀態
如果設備上沒有硬件功能(例如,陀螺儀),則調用與該功能相關的啟動方法無效。 您可以通過檢查適當的屬性來確定硬件功能是否可用或處於活動狀態。 例如,對於陀螺儀數據,您可以檢查gyroAvailable或gyroActive屬性的值。
采用
@property(readonly, nonatomic, getter=isGyroAvailable) BOOL gyroAvailable
CMMotionManager類。
看到
@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 。
從埃里卡蘇丹出發:
- (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;
}
邁克,您可以通過預處理程序指令了解用戶是否正在使用iPhone 4。 例如:
#ifdef __IPHONE_4_0
// Do some work for iPhone 4 device
#else
// Do some work for non iPhone 4 device
#endif
希望對您有所幫助。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.