NSStringDrawingContext का वास्तविक स्केलफ़ैक्टर कब बदलता है?समायोजित करते समय FontSizeToFitWidth या boundingRectWithSize context.actualScaleFactor को बदलें?
"आप minimumScaleFactor संपत्ति में एक कस्टम मूल्य निर्दिष्ट किया है, जब ड्राइंग पूरा हो गया है, इस संपत्ति के वास्तविक पैमाने कारक मूल्य कि स्ट्रिंग आकर्षित करने के लिए किया गया था।"
मेरे कोड:
myButton.titleLabel!.font = UIFont(name: "AmericanTypewriter-Bold", size: 40)
myButton.titleLabel?.adjustsFontSizeToFitWidth = true
myButton.setTitle("\(textString)", forState: .Normal)
let attributes = [NSFontAttributeName : myButton.titleLabel!.font]
let attributedString = NSMutableAttributedString(string:textString, attributes:attributes)
let context = NSStringDrawingContext()
context.minimumScaleFactor = myButton.titleLabel!.minimumScaleFactor
print("context: \(context.actualScaleFactor)")
let resultingRect = attributedString.boundingRectWithSize(myButton.titleLabel!.bounds.size, options: .UsesLineFragmentOrigin, context: context)
print("actual context after drawing: \(context.actualScaleFactor)")
//want to get the font size after adjustsFontSizeToFitWidth has done its magic:
//let actualFontSize = myButton.titleLabel!.font.pointSize * context.actualScaleFactor
दोनों पाठ कि सिकुड़ जा रहा है बिना फिट बैठता है और लंबे समय तक पाठ के लिए कंसोल लॉग उस लेबल की चौड़ाई फिट करने के लिए निकाला जाता है दोनों एक ही हैं:
context: 0.0
actual context after drawing: 1.0
कोई विचार करें कि वास्तविक स्तर प्राप्त करने के लिए मुझे कौन सा कदम गुम है, पाठ के फिट होने के लिए टेक्स्ट का आकार बदलने के बाद संदर्भ से फैक्टर?
धन्यवाद। यह मेरे लिए ठीक काम करता है। मेरे पास वास्तविक फ़ॉन्ट आकार 70pt, न्यूनतम स्केल फैक्टर 0.1, और "एडजस्ट्स टॉफिट" सत्य के साथ एक UILabel है। अपने कोड को निष्पादित करते समय viewDidAppear के बाद, मेरे कंसोल आउटपुट ने दिखाया: "संदर्भ: 0.0 ड्राइंग के बाद वास्तविक संदर्भ: 0.36 समायोजित करें फ़ॉन्ट आकार: 14.4"। और वास्तव में जब मैंने इस लेबल को अपने लेबल के फ़ॉन्ट पर समायोजित किया है ("समायोजन करने के लिए" समायोजित करने के बाद), पाठ को बदलने से फ़ॉन्ट आकार बदल नहीं जाता है। – ObjectiveTC