2012-12-24 6 views
41

Używam UIGraphicsBeginImageContextWithOptions() i zauważyłem, że ostatnim polem w tej metodzie jest scalefactor. A docs z Apple mówi, że jeśli chcę ustawić go na 0.0, to użyje domyślnego współczynnika skalowania głównego ekranu urządzenia. Czy istnieje sposób na uzyskanie tego domyślnego współczynnika skali przez właściwość lub metodę?Jak uzyskać współczynnik skali urządzenia?

Odpowiedz

86

współczynnik skali urządzenia jest właściwością UIScreen. Możesz go uzyskać przez:

[UIScreen mainScreen].scale; 

Documentation here.

+0

Dzięki stary, duża pomoc. – ManOx

+1

Dla iPhone 6 +/7 +/8 +, możesz rozważyć UIScreen.main.nativeScale (kod Swift, dla iOS 8+), jeśli chcesz idealnie dopasować do piksela ekranu. Na przykład dzielnik o jednej piksel lub linia włosów lub 2px na 6/7/8 i 3 piksele na 6 +/7 +/8 +, tak jakby była to granica segmentowanego elementu sterującego. –

-1

nadzieję, że pomoże Ci

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] skalować] == 2.0f' jest błędna, nie porównać pływaków użyciem' '==. –

+0

czy importowałeś? #import

+1

o czym ty mówisz? –

17

Swift 3+ wersja:

UIScreen.main.scale 
+8

Swift3: 'UIScreen.main.scale' – twodayslate