Ho utilizzato UIGraphicsBeginImageContextWithOptions()
e ho notato che l'ultimo campo in questo metodo è un scalefactor
. E i documenti Apple dice, se voglio impostarlo su 0.0, utilizzerà il fattore di scala predefinito della schermata principale del dispositivo. C'è un modo per ottenere quel fattore di scala predefinito tramite proprietà o metodo?Come ottenere il fattore di scala dei dispositivi?
41
A
risposta
86
fattore di scala del dispositivo è una proprietà di UIScreen
. Lo si può ottenere da:
[UIScreen mainScreen].scale;
-1
Spero che vi aiuterà a
CGSize textcontent =CGSizeMake(width, height);
UIGraphicsBeginImageContext(textcontent);
if ([UIScreen instancesRespondToSelector:@selector(scale)] && [[UIScreen mainScreen] scale] == 2.0f)
{
UIGraphicsBeginImageContextWithOptions(textcontent, YES, 1.0f);
}
else
{
UIGraphicsBeginImageContext(textcontent);
}
[view.layer renderInContext:UIGraphicsGetCurrentContext()];
viewImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return viewImage;
+5
'[[UIScreen mainScreen] Scala] == 2.0f' è errata, non si confronta carri usando' == '. –
+0
hai importato .. #import
+1
di cosa stai parlando? –
17
Grazie amico, grande aiuto. – ManOx
Per iPhone 6 +/7 +/8 +, si può prendere in considerazione UIScreen.main.nativeScale (codice Swift, per iOS 8+) se si desidera un pixel dello schermo perfettamente allineato. Ad esempio, un divisore di un pixel o linea sottile, o 2px su 6/7/8 e 3px su 6 +/7 +/8 + come se il bordo di un controllo segmentato. –