2012-12-24 31 views
41

我一直在使用UIGraphicsBeginImageContextWithOptions(),我注意到該方法的最後一個字段是scalefactor。蘋果文檔說,如果我想將其設置爲0.0,那麼它將使用設備主屏幕的默認比例因子。有沒有辦法通過屬性或方法獲得默認比例因子?如何獲取設備比例因子?

回答

86

該設備的比例因子是UIScreen屬性。您可以通過以下方式獲得:

[UIScreen mainScreen].scale; 

Documentation here

+0

謝謝你,大大的幫助。 – ManOx

+1

對於iPhone 6 +/7 +/8 +,如果您想要完美對齊屏幕像素,您可以考慮使用UIScreen.main.nativeScale(Swift代碼,適用於iOS 8+)。例如,一個像素分隔線或髮際線,或6 +/7 +/8 +上的6x7/8和3px上的2px,就好像分段控件的邊界一樣。 –

-1

希望它會幫助你

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]縮放] == 2.0f'是錯誤的,不使用'比較花車=='。 – 2012-12-24 07:38:31

+0

是否導入.. #import

+1

你在說什麼? – 2012-12-24 07:43:56

17

斯威夫特3+版本:

UIScreen.main.scale 
+8

Swift3:'UIScreen.main.scale' – twodayslate