adjustsFontSizeToFitWidth 或 boundingRectWithSize 何时更改 context.actualScaleFactor?

Posted

技术标签:

【中文标题】adjustsFontSizeToFitWidth 或 boundingRectWithSize 何时更改 context.actualScaleFactor?【英文标题】:When do adjustsFontSizeToFitWidth or boundingRectWithSize change the context.actualScaleFactor? 【发布时间】:2016-04-09 21:59:33 【问题描述】:

NSStringDrawingContext 的实际ScaleFactor 什么时候改变?

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 吗?

【问题讨论】:

感谢您翻译为 swift。这对我来说可以。我有一个 UILabel,实际字体大小为 70pt,最小比例因子为 0.1,并且“adjustsToFit”设置为 true。在 viewDidAppear 之后执行代码时,我的控制台输出显示:“context: 0.0 actual context after drawing: 0.36adjustedFontSize: 14.4”。事实上,当我将这个adjustedFontSize 应用到我的标签字体时(在将“adjustsToFit”设置为false 之后),更改文本不会改变字体大小。 这个答案很可能会帮助你***.com/a/58340894/9024807 【参考方案1】:

在 viewDidAppear 中执行此操作...这对我有用

【讨论】:

【参考方案2】:

和@RanLearns 一样的问题。

添加 myButton.titleLabel!.minimumScaleFactor = 0.1 后它对我有用

【讨论】:

以上是关于adjustsFontSizeToFitWidth 或 boundingRectWithSize 何时更改 context.actualScaleFactor?的主要内容,如果未能解决你的问题,请参考以下文章

adjustsFontSizeToFitWidth 与 NSLineBreakByCharWrapping 无法共用

自动布局在adjustsFontSizeToFitWidth 与fixedNumberOfLines 一起使用之前计算大小

现在是不是可以使用带有adjustsFontSizeToFitWidth 的Multiline UILabel?

adjustsFontSizeToFitWidth 或 boundingRectWithSize 何时更改 context.actualScaleFactor?

adjustsFontSizeToFitWidth 对 UILabel 的影响与对 UITextField 的影响不同

iOS 根据给定宽度自适应文字大小