【问题标题】:Size categories not working for Accessibility adjust image size for UIButton大小类别不适用于辅助功能调整 UIButton 的图像大小
【发布时间】:2020-10-04 08:45:43
【问题描述】:

我有一个带有图像(不是背景图像)的 UIButton,我想在手机使用大文本时对其进行缩放。

目前我已经在 XIB 中设置了adjusts image size 来实现这一点:

奇怪的事情来了:

当我将文本大小设置为高于某个标记时,图像会按您的预期缩放并变大。

如果我将其设置为低于它的大小,然后又恢复为常规文本大小:

值得注意的是,有问题的图像是star 图像和info 图像。请忽略左边的电车图片。

我尝试了什么?

  • 我查看了这些限制 - 这些似乎没有影响。按钮的高度和宽度固定为 44 x 44 像素,但这对于图像在边界内变大(正常图像尺寸仅为 20x20)足够大
  • 我已尝试在代码中设置值:
@IBOutlet private var infoButton: UIButton! {
    didSet {
        infoButton.adjustsImageSizeForAccessibilityContentSizeCategory = true
        infoButton.titleLabel?.adjustsFontForContentSizeCategory = true
    }
}

但这也不能解决问题

  • 我已经在各种操作系统(iOS 11、12 和 13)上的真实设备和模拟器上对此进行了测试,这似乎发生在所有操作系统上。

这可能只是 Apple 的一个错误 - 如果是这样的话,那么当尺寸等级从 .extraExtraExtraLarge 更改为 .accessibilityMedium 时,这似乎很奇怪。

  • 当我减小字体大小时,图像确实会像预期的那样减小大小 - 这向我表明,图像有合适的大小等级可供选择,但它并没有击中它们。

  • 有趣的是,这些按钮没有文本,我发现一个答案暗示尺寸等级取自按钮的标题并应用于图像 - 为什么它有时会起作用而不是其他?

非常感谢任何帮助或建议

【问题讨论】:

  • 您的图像尺寸只会在 a11y 尺寸等级范围内变化。
  • 为什么图片大小只会随着.extraExtraExtraExtraLarge以上的大小等级而变化?这没有意义。
  • 该链接似乎包含我所追求的信息,我只是在努力寻找确切的位。我已经在使用矢量比例图像(单比例),所以我不确定是否必须使用大型内容查看器(不理想),因为我觉得我已经在图形元素大小部分做了所有事情。
  • 关于图形元素大小的部分没有记录在 .medium 和 .extraExtraLarge 之间平滑放大的图像。如果是这样,那么我还没有找到合适的部分。它只展示了如何让它们成为动态的(这是我目前正在做的)。

标签: ios swift uibutton uiaccessibility dynamic-type-feature


【解决方案1】:

为什么图像尺寸只会随着尺寸等级高于.extraExtraExtraLarge 而改变?这没有意义。

当您的屏幕截图显示在您的问题中时,您勾选了仅处理 AccessibilityAdjusts Image Size

Xcode 界面可能不太好理解,但它明确指出只能针对处理可访问性的五个最大动态类型大小调整图像⟹在 Building Apps with Dynamic Type WWDC 视频 (22:47) 获取可靠来源。?

如果需要,有一个nice detailed way 在 Xcode 中介绍图像,以确保它们可以尽可能平滑地放大。 ?

我希望您现在对尺寸类别如何调整按钮中的图像尺寸有了更好的了解。 ?

【讨论】: