SF Symbol看起来变形

时间:2019-10-11 09:37:09

标签: ios xcode storyboard sf-symbols

在UIButton上使用新的SF Symbols时,这些符号在我的iPhone 8上似乎变形了,而在iPhone 11 Simulator上,一切都很好。 在iPhone 8上,这些符号似乎水平挤压,使其变得过高。我做了一个gif来说明问题。 gif显示了两个过渡的屏幕截图。八分之一,十一分之一:

Illustration of the problem

还有其他人有这个问题吗?这是怎么回事?

编辑:

IB属性。对于包含视图的边缘,此按钮限制为全部。

编辑#2:为符号指定字体时,将正确调整符号的大小,并缩放“大”。我尝试了SystemFont“标题”。

IB Attributes

2 个答案:

答案 0 :(得分:1)

用代码在按钮的图像视图上设置内容模式似乎可以解决。

button.imageView?.contentMode = .scaleAspectFit

下面的屏幕快照中的信息圈是一个使用'info.circle.fill'SF符号的UIButton。

App Example

答案 1 :(得分:0)

我还没有尝试过所有符号,但是看起来至少所有基于圆形的符号都有此问题。

编辑:有关使用图像视图的contentMode的解决方法,请参见fahlout's answer

您已经注意到,在常规/中号字体大小为17pt的情况下,某些符号未按预期呈现,并且某些形状变形。

一些观察:

  • 这似乎只是UIButton渲染图像的情况,UIImageView不会受到影响。
  • 当增加字体大小/使用更大或更粗的符号变体时,问题将不太明显或完全消失。如果我不得不猜测,那是因为错误的渲染是由一些浮点数舍入误差引起的,并且当比例尺较大时,误差的影响较小。

以下是circle符号(绿色)在不同比例和大小下的可视比较,并在Photoshop中覆盖了一个参考圆(红色):

enter image description here

  • 左:字体=标题;比例=未指定;重量=未指定
  • 中心:字体=正文;比例=未指定;重量=未指定
  • 右:字体=标题;秤=大重量=未指定

我们可以在这里看到,无论在任何情况下,圆形符号都不是一个完美的圆形,并且水平缺少一个或两个像素(取决于字体大小)是完美的圆形。

我已经制作了一个显示问题的项目:https://github.com/guillaumealgis/UIButton-SFSymbol-Squished

不幸的是,对于这个问题,我没有一个好的解决方案或解决方法,因为它似乎是UIKit的内部错误。

编辑:有关使用图像视图的contentMode的解决方法,请参见fahlout's answer

您还应该向Apple提交反馈,以增加修复此错误的机会! (我是FB7461981苹果人?)