2016-01-05 7 views
6

Когда изменяется фактический масштаб объекта NSStringDrawingContext?Когда настраиваютсяFontSizeToFitWidth или boundingRectWithSize изменяют context.actualScaleFactor?

The documentation says:

«Если указано пользовательское значение в свойстве 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 из контекста после того, как текст был настроен так, чтобы он соответствовал метке?

+0

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

ответ

0

сделать это в viewDidAppear ... Это работало для меня

0

Та же проблема, как @RanLearns.

После добавления myButton.titleLabel!.minimumScaleFactor = 0.1 он работал для меня