持续创造,加快生长!这是我参与「日新计划 6 月更文应战」的第10天,点击检查活动概况


上一篇 我们介绍了如何在Xcode中使用 Accessibility Inspector工具,检查项目中所有元素对 VoiceOver (旁白)功用的支撑状况。

本篇,就来看看,出现的警告⚠️,假如去修正

这次我们就不用自己的demo了,用现成的比较直观。 点击下载链接

首先,我们看看这个项目,经过审计 (Audit) 功用能够看到,有很多警告

第一个是 Element has no description,

作为iOSer,如何让自己的项目更有温度?(中)

便是,这个 image view没有辅佐功用标签,

那我们就来给这个图片加上 辅佐功用标签。

首先写一个函数

// MARK: Accessibility
extension RecipeCell {
  func applyAccessibility(_ recipe: Recipe) {
    // 1
    foodImageView.accessibilityTraits = .image
    // 2
    foodImageView.accessibilityLabel = recipe.photoDescription
  }
}

然后在赋值的时候,将recipe 传进去

applyAccessibility(recipe)
  • 这儿的 accessibilityTraits表示 告知旁白,这个imageView 是imag
  • 这儿的accessibilityLabel表示,旁白会经过这个值去描绘这个物体。这儿我们把他设置成了recipe.photoDescription,便是一个图片的内容描绘。

先看之前的,当用户点击到图像时,旁白会提示— image

作为iOSer,如何让自己的项目更有温度?(中)

当我们完结上面的设置后,

在看下图

作为iOSer,如何让自己的项目更有温度?(中)

会有更多的描绘,关于视障者来说,极大的提高了使用体验。

第二个是 potentially inaccessible text

这个意思是 或许无法访问的文本。便是说,这个东西或许是图片,也或许是表情包,这样对视障者是不可见的。

那怎样修正这个呢?

applyAccessibility(_:)方法的最后增加下面的代码:

// 1
difficultyLabel.isAccessibilityElement = true
// 2
difficultyLabel.accessibilityTraits = .none
// 3
difficultyLabel.accessibilityLabel = "Difficulty Level"
// 4
switch recipe.difficulty {
case .unknown:
  difficultyLabel.accessibilityValue = "Unknown"
case .rating(let value):
  difficultyLabel.accessibilityValue = "(value)"
}
  1. 将难度label(difficultyLabel) 的isAccessibilityElement设置为可见的,关于大多数 UIKit 类,默认为true,可是 UILabel 的是false

  2. accessibilityTraits协助标识辅佐功用元素的特征。由于这个标签不需要任何交互,所以设置为了none。

  3. 旁白(VoiceOver) 就能够识别出标签的含义了。难度级别(Difficulty Level)能够让用户清楚地知道他们在做的食物是什么难度。

  4. 旁白(VoiceOver) 会把accessibilityValue作为标签描绘的一部分念出来。在这儿设置好难度等级能够让这个元素变得更有协助。

这样做就完结了,然后来从头运转一下。

作为iOSer,如何让自己的项目更有温度?(中)

能够看到,食谱难度,现已能够经过旁白读出来了。

在从头跑一下审计(audit)

发现 potentially inaccessible text 现已没有了

作为iOSer,如何让自己的项目更有温度?(中)

第三个 Dynamic text font sizes are unsupported

这个表示动态字体大小不支撑,便是说假如用户经过体系放大缩小文字,那么app上的文字不会动态改动。

我们点击设置(绿色框)

作为iOSer,如何让自己的项目更有温度?(中)

同样能够看到修正主张

作为iOSer,如何让自己的项目更有温度?(中)

能够看到下面有字体大小调理的轨迹。

可是按现在的状况,我们怎样调理,都不会改动app上字体的大小。

所以,接下来,我们按照主张来修正代码。

dishNameLabel.font = .preferredFont(forTextStyle: .body)
dishNameLabel.adjustsFontForContentSizeCategory = true
difficultyLabel.font = .preferredFont(forTextStyle: .body)
difficultyLabel.adjustsFontForContentSizeCategory = true
  • 我们把preferredFont设置为body风格,也便是说 体系会把文字显示为文档主体内容的字体风格。详细字号和字体取决于辅佐功用设置。
  • adjustsFontForContentSizeCategory表示当用户修正了文本内容的尺寸时,是否自动更新字体。

这样,就完结了修正。

从头Run一下。

看下作用

基本上达到了能够根据设置字体改动而改动显示。只是UI仍是差点。

从头看一下审计

作为iOSer,如何让自己的项目更有温度?(中)

现已没有了警告。大功告成~~~

下一篇,我们来说说其他能够改善的小设置。