2012-12-24 35 views
41

मैं UIGraphicsBeginImageContextWithOptions() का उपयोग कर रहा हूं और मैंने देखा कि उस विधि का अंतिम क्षेत्र scalefactor है। और सेब डॉक्स कहते हैं, अगर मैं इसे 0.0 पर सेट करना चाहता हूं, तो यह डिवाइस की मुख्य स्क्रीन के डिफ़ॉल्ट स्केल फैक्टर का उपयोग करेगा। क्या संपत्ति या विधि के माध्यम से उस डिफ़ॉल्ट स्केल फैक्टर को पाने का कोई तरीका है?डिवाइस स्केल कारक कैसे प्राप्त करें?

उत्तर

86

डिवाइस के पैमाने कारक UIScreen की संपत्ति है।

[UIScreen mainScreen].scale; 

Documentation here: आप से इसे प्राप्त कर सकते हैं।

+0

धन्यवाद आदमी, बड़ी मदद। – ManOx

+1

आईफोन 6 +/7 +/8 + के लिए, यदि आप स्क्रीन पिक्सेल पर पूरी तरह से गठबंधन करना चाहते हैं तो आप UIScreen.main.nativeScale (आईओएस 8+ के लिए स्विफ्ट कोड) पर विचार कर सकते हैं। उदाहरण के लिए, एक पिक्सेल डिवाइडर या हेयरलाइन, या 6/7/8 पर 2 पीएक्स और 6 +/7 +/8 + पर 3 पीएक्स जैसे कि सेगमेंटेड कंट्रोल की सीमा। –

-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' गलत है, का उपयोग करते हुए' तैरता तुलना नहीं है == '। –

+0

आपने आयात किया था .. # आयात

+1

आप किस बारे में बात कर रहे हैं? –

17

स्विफ्ट 3+ संस्करण:

UIScreen.main.scale 
+8

स्विफ्ट 3: 'UIScreen.main.scale' – twodayslate