2016-01-05 41 views
6

NSStringDrawingContext的actualScaleFactor何时更改?什么时候adjustsFontSizeToFitWidth或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

感谢您翻译成迅速。这对我来说可以。我有一个实际字体大小为70pt,最小比例因子为0.1,并且“adjustsToFit”设置为true的UILabel。在执行代码后,viewDidAppear,我的控制台输出显示:“上下文:0.0 绘制后的实际上下文:0.36 adjustedFontSize:14.4”。实际上,当我将这个adjustedFontSize应用到我的标签的字体(将“adjustsToFit”设置为false后)时,更改文本不会更改字体大小。 – ObjectiveTC

回答

0

为此在viewDidAppear ...这工作对我来说

0

同样的问题@RanLearns。

添加myButton.titleLabel!.minimumScaleFactor = 0.1后,它为我工作

相关问题