开发者社区> 异步社区> 正文

《iOS 6核心开发手册(第4版)》——2.13节秘诀:创建拉式控件

简介:
+关注继续查看

本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第2章,第2.13节秘诀:创建拉式控件,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.13 秘诀:创建拉式控件
iOS 6核心开发手册(第4版)
想象一下屏幕顶部有一根绳子。用力拉它,它会使铃声响起来,或者通过控件的目标—动作机制触发某类事件。例如,它可能展示一个附件视图、开始一个下载,或者开始视频播放。这个秘诀构建一个类似于丝带的控件。在交互时,该控件将会更新客户,它必须开始于“丝带”的顶部,向下拉得足够远以触发一个请求。然后,丝带将再次把自身缠绕起来,为下一次交互做准备。

图2-7显示了这个秘诀构建的控件,在这个示例中它被连接到附件视图的底部。用力拉它将使视图处于合适的位置,完成后它会从屏幕上消失。


3629422884f6c7c01d90ceb1be759d9f8c233cd2

图2-7 必须用力把丝带控件拉伸一段最短的距离,才能使之触发并重新缠绕起来。
每次成功后都会给其目标—动作客户发送一条值改变消息

2.13.1 可发现性
使丝带交互可发现给这个秘诀提出了一个特殊的挑战。用户也许不能立即在悬垂的红色形状与可操纵的控件之间创建连接。

开发人员Matthijs Hollemans建议了一种简单的方法来处理这种挑战。在用户与丝带交互之前,它将轻微摆动几次,每次摆动之间间隔数秒。摆动将吸引用户注意控件的性质,一旦用户正确地完成了控件样式,摆动就会停止。系统参数设置可以覆盖这种行为,以重复应用它:


e034711e9897793a60b46ede971cdb25d85f44f8

添加基于加速器的移动提供了另一种方式来吸引用户注意不明显的交互控件。开发人员Charles Choi建议允许丝带轻柔地响应设备移动,提供一种替代机制用于增强控件的可发现性。把这种方法留作练习让读者完成。

要从Apple自身获得灵感。Apple在整个iOS中集成了可发现性提示,比如使用滑块解锁文本,它们建议了如何以及滑动什么经过简单的动画。

2.13.2 测试触摸
秘诀2-8以两种方式限制交互。第一,用户必须在丝带艺术作品内触摸以开始交互。如果不是这样,触摸将失败,并且控件不会对它做出响应,即使触摸可能开始于控件框架的顶部。第二,这个秘诀将测试丝带位图,以确保触摸开始于艺术作品的实心(非透明)部分。如图2-7中所示,在艺术作品的底部出现了一个凹槽。这个凹槽中的触摸将不会开始一个跟踪序列。这个秘诀将比较触摸位置与艺术作品中的像素。如果艺术作品的透明度(Alpha级别)在85以下(大约67%的透明度),触摸将不会与丝带联系起来。

为这个秘诀提供的示例代码不会测试拉伸过的艺术作品。它假定在艺术作品与屏幕上的展示之间具有一对一的关系。因此,将不得不进行透明度测试,或者如果选择以任何方式调整这个控件的大小,就要修改代码以使之可用于拉伸过的艺术作品。

一旦跟踪开始,艺术作品将跟随触摸移动,利用用户的手指上下拖动它。如果在这个秘诀中触摸的移动距离超过了75磅,控件就会触发。它会给其客户发送一个值改变事件。严格来讲,这个控件不具有一个“值”,但是控件内的触摸抬起动作感觉与控件的工作方式不太匹配。

当到达那个位置时,继续跟踪方法将返回NO,指示跟踪完成,并且控件完成了这个特定交互的事务。如果触摸的移动距离没有超过阈值,或者用户在没有到达那个位置时就停止交互,控件将把它的艺术作品回滚到开始位置。这将重置可视化表示,使之为下一个交互做好准备。


d328015632a6f25533ba35ed1fda396270ed6550


4b432cc9432ecaa304ac1996989c0b9f0d88f253


b1be19722c89cf3ab2a6edd2d8ab0bbf67dbd3c8

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
iOS开发 - 写一个刷新的控件(未封装,适合新手学习,查看原理)
29 0
iOS开发-加在透明视图上的控件会透明
iOS开发-加在透明视图上的控件会透明
18 0
iOS小技能:下拉刷新控件的适配
1. 下拉顶部背景色设置: 往tableView的父控件添加拉伸背景视图 2. present 半屏适配 iOS13 modalPresentationStyle属性默认不是全屏样式`UIModalPresentationFullScreen`,而是半屏样式,需要根据需求手动设置。 present 半屏,会导致列表下拉刷新失效。
16 0
iOS小技能:自动布局实现兄弟控件N等分且宽高比例是1:N(xib 上实现)
本文为 iOS视图约束专题的第三篇:xib上使用自动布局教程
43 0
iOS开发:用XIB拖控件关联时报错:“Could not insert new outlet connection…”解决方法
在iOS开发过程中,尤其是iOS开发初期,会遇到各种各样的错误,有些错误是开发者的不熟悉或者疏忽大意造成的,还有些是无厘头的错误,可以通过重启Xcode或者重启电脑就可解决。
79 0
仿IOS 带字母索引的滑轮控件
仿IOS 带字母索引的滑轮控件
53 0
iOS视图置顶的应用:适配iOS12系统上日期控件被筛选视图遮挡问题
iOS视图置顶的应用:适配iOS12系统上日期控件被筛选视图遮挡问题
72 0
iOS集成下拉刷新控件 & 实现无感知上拉加载更多
iOS集成下拉刷新控件 & 实现无感知上拉加载更多
126 0
iOS创建支持长按复制的Label控件
iOS创建支持长按复制的Label控件
118 0
iOS xib 实现兄弟控件N等分且宽高比例是1:N
iOS xib 实现兄弟控件N等分且宽高比例是1:N
199 0
+关注
异步社区
异步社区(www.epubit.com)是人民邮电出版社旗下IT专业图书旗舰社区,也是国内领先的IT专业图书社区,致力于优质学习内容的出版和分享,实现了纸书电子书的同步上架,于2015年8月上线运营。公众号【异步图书】,每日赠送异步新书。
文章
问答
视频
文章排行榜
最热
最新
相关电子书
更多
Facebook iOS App技术演化十年之路
立即下载
From Java_Android to Swift iOS
立即下载
深入剖析 iOS 性能优化
立即下载