持续创造,加快生长!这是我参与「日新计划 6 月更文应战」的第10天,点击检查活动概况
上一篇 我们介绍了如何在Xcode中使用 Accessibility Inspector
工具,检查项目中所有元素对 VoiceOver (旁白)功用的支撑状况。
本篇,就来看看,出现的警告⚠️,假如去修正
这次我们就不用自己的demo了,用现成的比较直观。 点击下载链接
首先,我们看看这个项目,经过审计 (Audit) 功用能够看到,有很多警告
第一个是 Element has no description
,
便是,这个 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
当我们完结上面的设置后,
在看下图
会有更多的描绘,关于视障者来说,极大的提高了使用体验。
第二个是 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)"
}
-
将难度label(
difficultyLabel
) 的isAccessibilityElement
设置为可见的,关于大多数 UIKit 类,默认为true
,可是 UILabel 的是false
。 -
accessibilityTraits
协助标识辅佐功用元素的特征。由于这个标签不需要任何交互,所以设置为了none。 -
旁白(VoiceOver) 就能够识别出标签的含义了。难度级别(
Difficulty Level
)能够让用户清楚地知道他们在做的食物是什么难度。 -
旁白(VoiceOver) 会把
accessibilityValue
作为标签描绘的一部分念出来。在这儿设置好难度等级能够让这个元素变得更有协助。
这样做就完结了,然后来从头运转一下。
能够看到,食谱难度,现已能够经过旁白读出来了。
在从头跑一下审计(audit)
发现 potentially inaccessible text
现已没有了
第三个 Dynamic text font sizes are unsupported
这个表示动态字体大小不支撑,便是说假如用户经过体系放大缩小文字,那么app上的文字不会动态改动。
我们点击设置(绿色框)
同样能够看到修正主张
能够看到下面有字体大小调理的轨迹。
可是按现在的状况,我们怎样调理,都不会改动app上字体的大小。
所以,接下来,我们按照主张来修正代码。
dishNameLabel.font = .preferredFont(forTextStyle: .body)
dishNameLabel.adjustsFontForContentSizeCategory = true
difficultyLabel.font = .preferredFont(forTextStyle: .body)
difficultyLabel.adjustsFontForContentSizeCategory = true
- 我们把
preferredFont
设置为body
风格,也便是说 体系会把文字显示为文档主体内容的字体风格。详细字号和字体取决于辅佐功用设置。 -
adjustsFontForContentSizeCategory
表示当用户修正了文本内容的尺寸时,是否自动更新字体。
这样,就完结了修正。
从头Run一下。
看下作用
基本上达到了能够根据设置字体改动而改动显示。只是UI仍是差点。
从头看一下审计
现已没有了警告。大功告成~~~
下一篇,我们来说说其他能够改善的小设置。