Когда изменяется фактический масштаб объекта 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
Любой подумайте, какой шаг мне не хватает, чтобы получить реальный scaleFactor из контекста после того, как текст был настроен так, чтобы он соответствовал метке?
Спасибо за перевод на стриж. Он отлично работает для меня. У меня есть UILabel с фактическим размером шрифта 70pt, минимальным масштабным коэффициентом 0.1, а «adjustsToFit» установлен в true. При выполнении вашего кода ПОСЛЕ viewDidAppear мой вывод на консоль показал: «context: 0.0 фактический контекст после рисования: 0.36 adjustFontSize: 14.4". И действительно, когда я применил этот скорректированный шрифт к шрифту моего ярлыка (после установки «adjustsToFit» на false), изменение текста не изменяет размер шрифта. – ObjectiveTC