当自动调整大小时,UITextField的字体重量发生改变

3

我在一个storyboard中有一个UITextField,其字体为System Ultralight,大小为70。标签具有固定宽度,并设置为如果大小70超出该宽度,则调整为较小的字体大小(在属性检查器中选中“自适应大小”)。这个功能可以正常工作,但是在自动调整大小时,字体会更改为System Regular。我已经通过打印语句进行了验证:print(myLabel.font)

Optional(<UICTFont: 0x7fa7cac3faf0> font-family: ".SFUIDisplay-Ultralight"; font-weight: normal; font-style: normal; font-size: 70.00pt)
Optional(<UICTFont: 0x7fa7cac81ed0> font-family: ".SFUIDisplay-Regular"; font-weight: normal; font-style: normal; font-size: 64.00pt)

注意标签调整大小时的变化,从“.SFUIDisplay-Ultralight”变成了“.SFUIDisplay-Regular”。

一旦发生这种情况,更改就是永久性的。即使输入较小的数字,标签也永远不会恢复为 Ultralight。

我在其他 SO 帖子上找到了关于 UITextFields 在编辑时表现奇怪的问题,但没有找到这个特定的问题。对于为什么会发生这种情况或如何解决它的任何帮助都将不胜感激!


font weight changing


抱歉 - 你能告诉我如何重现这个行为吗? - matt
@matt,1. 在Storyboard中添加UITextField。2. 将字体设置为System Ultralight,大小为70。3. 设置最小字体大小。4. 添加宽度约束。5. 运行应用程序,并输入超过容纳范围的字符。 - Greg Kaleka
没问题,我可以做到。 - matt
1个回答

0
根据苹果公司的说法,系统字体的超轻重量级别会在字号低于20点时自动切换到更重的重量级别。如果这种情况发生在更大的字号上,那么很可能是一个错误,您应该报告它。同时,请使用Light字体,这是最轻的字体,不会以这种方式自动切换。

谢谢Matt。不幸的是,切换到Light并不能解决问题。即使从70pt调整到64pt,它仍然会变成Regular。 - Greg Kaleka
这不是我看到的,但好吧。也许是我的眼花了。无论如何,请提交一个错误报告。 - matt
1
嗯,你可能对Light也是正确的。唉。归档! - matt
好的,谢谢Matt。很高兴听到你也能够重现它。我已经提交了一个雷达报告。 - Greg Kaleka
就此而言,我在iOS 9.0中遇到了这个问题,但是相同的代码在iOS 10中没有任何问题。 - Fluffhead
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接