2012-12-24 21 views
41

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?

risposta

86

fattore di scala del dispositivo è una proprietà di UIScreen. Lo si può ottenere da:

[UIScreen mainScreen].scale; 

Documentation here.

+0

Grazie amico, grande aiuto. – ManOx

+1

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. –

-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

Swift 3+ versione:

UIScreen.main.scale 
+8

Swift3: 'UIScreen.main.scale' – twodayslate

Problemi correlati