9887小游戏,云轩阁txt,北京韵达快递电话
开发者经常会为用户开发一些令人充满惊喜的App。但是,开发者真的为每一个潜在的用户都做适配了么?是否每个人都可以真正使用你的APP呢?
设计APP、产品或者任何类型的服务,都要考虑到所有用户,包括视力、运动、学习或者听力有障碍的人。
Apple不断地向开发者提供持续更新的工具,以便在设计的时候考虑到辅助功能。
在这个指南中,你将从一个已经开发完成的APP入手,让其变得更易于访问。你将会学习到以下知识点:
本指南使用的是Swift语言,如果你对Swift了解不多,可以先学习Swift,然后再阅读。
注意:你需要一台物理设备来进行VoiceOver实验--这个accessibility特性不支持模拟器
在学习过程中你用到的Demo APP是一个类似食谱的App,它展示了不同难度级别的食谱,而且可以对你做过的食物进行评分。
你可以从下载这个Demo APP。在你运行到真机之前,你需要配置相关的签名。(具体配置就不在多说了,如果你想在模拟器运行,则不用配置)。
运行起来之后,可以先对此工程进行简单的了解。下面是对几个类的介绍:
了解了本工程的大体结构之后,我们就开始添加一些accessibility特性。
开始编码之前,我们首先要理解accessibility的好处:
VocieOver screen-reading 工具可以让用户在不看屏幕的情况下和你的软件进行交互,它是专门为有视觉障碍的用户而设计的。
VoiceOver是UI和用户touch输入的链接,它提供了不同组件的可听性描述以及应用程序中所采取操作的可听性反馈。
要想使用VoiceOver,首先打开设置app,然后通用-->辅助功能(Accessibility)-->VoiceOver(旁白),打开即可。
打开了VoiceOver,接下来对一些操作手势进行简单的学习:
在设置中打开VoiceOver之后,运行食谱APP到手机,然后你可以按照上面的操作对该APP进行简单操作,你会发现一些问题:
接下来就来解决这两个问题。
为了支持可访问性,辅助功能属性是你必须要实现的核心组件。
VoiceOver使用这些属性为用户提供有关应用中显示元素的可听信息。
辅助功能有四个属性:
大多数的UIKit组件都具有这些属性,你需要对属性进行相关的设置使VoiceOver的内容更有意义。
在修复上面所说的两个问题时,你将会用到Xcode的一个工具:Accessibility Inspector。它可以做的事情有:
要想打开该工具,直接在Xcode菜单,然后Xcode-->Open Developer Tool-->Accessibility Inspector:
它的主界面是这样的:
在Target Chooser处,你可以选择不同的设备以及不同的APP。将Recipes工程使用模拟器运行,然后使用该工具选择模拟器。
选中Inspection Pointer,接下来将鼠标移动到模拟器,你会看到类似VoiceOver一样的选框,你可以使用该工具进行元素查看以及操作。
Inspection Deatil框会展示选中元素的一些信息以及操作:
确定你的模拟器还在运行,并且当前展示的是食谱的列表,在inspector中,点击Audit 图标,然后点击Run audit。你会立即发现inspector已经找到一些缺少描述的元素。当你点击一个警告,模拟器中对应的元素会高亮。这种情况下,和cell关联的图片视图没有描述:
如果你点击 ?号的小按钮,你会得到一些建议来如何解决这个问题,你只需要按照它的建议做一些调整即可。
你(如果是QA同学)可以点击eye图标然后创建一个截图,方便向RD提交bug:
该工具还允许你测试下面的Accessibility设置:
1.Invert Color 反转颜色
2.Reduce Transparency 降低透明度
3.Reduce Motion 减少动画
4.Change font size 改变字体大小
你不再需要返回到设置APP中来设置这些特性。直接在Accessibility Inspector中操作即可。
尽管Accessibility Inspector可以做的事情很多,但是你还是应该手动去测试VoiceOver,来看看用户使用的时候究竟如何表现。
还看一下刚才的图片没有accessibility label。打开Xcode,然后打开RecipeCell.swift,然后添加下面的代码在文件的底部:
extension RecipeCell { func applyAccessibility(_ recipe: Recipe) { foodImageView.accessibilityTraits = UIAccessibilityTraitImage foodImageView.accessibilityLabel = recipe.photoDescription } }
这段代码添加了确实的辅助功能属性:
在RecipeCell中找到configureCell( _ : ),然后添加下面一行代码到方法的结尾:
applyAccessibility(recipe)
然后在真机上运行,(打开VoiceOver)再次点击图像,你就会听到读的内容(为photoDescription)。
这样不是更好吗?不是听到的image,而是提供了详细的图片描述,用户可以想象这种食物,而不是对图片内容一无所知。
接下来处理一下食谱难度的label。你需要使这些label可以访问,并且更新它的属性信息,提供有意义的描述。
在RecipeCell.swift中,添加下面的代码到applyAccessibility( _ : ):
difficultyLabel.isAccessibilityElement = true difficultyLabel.accessibilityTraits = UIAccessibilityTraitNone difficultyLabel.accessibilityLabel = "Difficult Label" switch recipe.difficulty { case .unknown: difficultyLabel.accessibilityValue = "Unkown" case .rating(let value): difficultyLabel.accessibilityValue = "\(value)" }
下面是对上述代码的一些介绍:
接下来打开VoiceOver并重新编辑运行,此时点击困难等级,便会阅读”Difficulty Level 1/2/3/4/5“。
每次你公开新的辅助功能元素时,再次运行一次。你会发现如下警告:
用户将无法改变label字体的大小。点击?号按钮,按照其提供的建议修改即可。
在RecipeCell.swift中的applyAccessibility( _ : )方法底部,添加如下代码:
difficultyLabel.font = UIFont.preferredFont(forTextStyle: .body) difficultyLabel.adjustsFontForContentSizeCategory = true
设置preferedFont为body意味着将Label的font设置为正文样式,大小和字体的细节取决于辅助功能设置。adjustsFontForContentSizeCategory是iOS10的新特性,表示当用户更改文本内容大小时,字体应自动更新。
其他的功能自己可以使用真机进行更改查看。其中的Invert Color为反转颜色。具有敏感性、视力不佳或者在某些情况下色盲的用户,可以使用此功能。
此时,使用Inspector工具提供的改变字体大小功能便可以调整字体的大小。
接下来看一下食谱的详情页面。你会发现下面的问题:
打开RecipeInstructionsViewController.swift,然后添加下面的代码到viewDidLoad中(assert(recipe != nil)后面):
backButton.accessibilityLabel = "back" backButton.accessibilityTraits = UIAccessibilityTraitButton
此时,VoiceOver将会说出”back button“,而不是”left arrow button“。
还是在这个文件中,使用下面的代码替换isLikedFoot( _ : ):
func isLikedFood(_ liked: Bool) { if liked { likeButton.setTitle("
您可能感兴趣的文章:
如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复
iOS 使用UITextField自定义搜索框 实现用户输入完之后“实时搜索”功能
网友评论