hat eine interne Methode [UIDevice _graphicsQuality]
, die vielversprechend scheint, aber natürlich wird Ihre App von Apple abgelehnt werden. Lassen Sie uns unsere eigene Methode erstellen:
Zunächst einmal müssen wir die genauen Gerätetyp wissen wir arbeiten:
#import <sys/utsname.h>
NSString* deviceName()
{
struct utsname systemInfo;
uname(&systemInfo);
return [NSString stringWithCString:systemInfo.machine
encoding:NSUTF8StringEncoding];
}
Diese iPad2,1
für iPad 2, beispielsweise zurückgeben sollte. Hier finden Sie eine aktualisierte Liste der iDevice-Modelle: https://theiphonewiki.com/wiki/Models
Also, lassen Sie uns unsere Gerätemodelle in zwei Gruppen einteilen: diejenigen, die schlechte Grafikqualität haben (und daher keine Unschärfe unterstützen), und solche mit hervorragender Grafikqualität. Laut meiner Untersuchung sind dies die Geräte, die Apple mit "schlechten" Grafiken betrachtet (diese könnten sich in Zukunft ändern):
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
So wir schreibe den folgenden Code:
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
}
Sei vorsichtig, auch wenn Das Gerät unterstützt möglicherweise Verwacklungsunschärfe. Der Benutzer kann erweiterte visuelle Effekte unter Einstellungen, Eingabehilfen deaktiviert haben.
Alternative Methode
https://gist.github.com/conradev/8655650
Wenn Sie den Simulator verwenden, ist die 'systemInfo.machine'-Eigenschaft x86_64 (auf meinem Mac); – Tjalsma