4

在 UIButton 上使用新的 SF 符号时,符号在我的 iPhone 8 上似乎失真,而在 iPhone 11 模拟器上一切正常。在 iPhone 8 上,符号似乎水平挤压,使其太高。我做了一个gif来说明这个问题。gif 显示了两个转换的屏幕截图。8 个中的一个和 11 个中的一个:

问题说明

还有其他人有这个问题吗?这里发生了什么?

编辑:

IB 属性。Button 被限制为包含视图的所有边缘。

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

IB 属性

4

2 回答 2

6

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

button.imageView?.contentMode = .scaleAspectFit

下面屏幕截图中的信息圈是一个使用“info.circle.fill”SF 符号的 UIButton。

应用示例

于 2019-11-23T05:30:58.210 回答
1

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

编辑:有关使用图像视图的 contentMode 的解决方法,请参阅fahlout 的答案

正如您所指出的,在字体大小为 17pt 的常规/中等大小下,某些符号未按预期呈现,并且某些形状被扭曲。

一些观察:

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

circle这是不同比例和大小的符号(绿色)的视觉比较,以及在 Photoshop 中覆盖的参考圆圈(红色):

在此处输入图像描述

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

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

我做了一个项目来显示这个问题:https ://github.com/guillaumealgis/UIButton-SFSymbol-Squiished

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

编辑:有关使用图像视图的 contentMode 的解决方法,请参阅fahlout 的答案

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

于 2019-11-22T17:27:23.307 回答