có phương thức nội bộ [UIDevice _graphicsQuality]
có vẻ đầy hứa hẹn, nhưng tất nhiên ứng dụng của bạn sẽ bị Apple từ chối. Hãy tạo phương pháp riêng của chúng tôi:
Trước hết, chúng ta cần phải biết loại thiết bị chính xác, chúng tôi đang làm việc trên:
#import <sys/utsname.h>
NSString* deviceName()
{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
này sẽ trả về iPad2,1
cho iPad 2, ví dụ. Dưới đây là danh sách cập nhật các mô hình iDevice: https://theiphonewiki.com/wiki/Models
Vì vậy, hãy phân loại mô hình thiết bị của chúng tôi thành hai nhóm: những người có chất lượng đồ họa kém (và do đó không hỗ trợ làm mờ) và những người có chất lượng đồ họa tuyệt vời. Theo điều tra của tôi, đây là những thiết bị mà Apple xem xét với đồ họa "nghèo" (những điều này có thể thay đổi trong tương lai):
iPad iPad1,1 iPhone1, iPhone1,2 iPhone2,1 iPhone3,1 iPhone3, 2 iPhone3,3 iPod1,1 iPod2,1 iPod2,2 iPod3,1 iPod4,1 iPad2,1 iPad2,2 iPad2,3 iPad2,4 iPad3,1 iPad3,2 iPad3,3
Vì vậy, chúng tôi viết mã sau đây:
NSSet *graphicsQuality = [NSSet setWithObjects:@"iPad",
@"iPad1,1",
@"iPhone1,1",
@"iPhone1,2",
@"iPhone2,1",
@"iPhone3,1",
@"iPhone3,2",
@"iPhone3,3",
@"iPod1,1",
@"iPod2,1",
@"iPod2,2",
@"iPod3,1",
@"iPod4,1",
@"iPad2,1",
@"iPad2,2",
@"iPad2,3",
@"iPad2,4",
@"iPad3,1",
@"iPad3,2",
@"iPad3,3",
nil];
if ([graphicsQuality containsObject:deviceName()]) {
// Device with poor graphics, blur not supported
} else {
// Blur supported
}
Hãy cẩn thận vì mặc dù thiết bị có thể hỗ trợ làm mờ, người dùng có thể đã tắt hiệu ứng hình ảnh nâng cao từ Cài đặt, Trợ năng.
phương pháp thay thế
https://gist.github.com/conradev/8655650
Khi sử dụng Trình mô phỏng, thuộc tính 'systemInfo.machine' là x86_64 (trên máy Mac của tôi); – Tjalsma