《iOS 6核心开发手册(第4版)》——2.6节秘诀:添加具有自定义指针的滑块

简介:

本节书摘来自异步社区《iOS 6核心开发手册(第4版)》一书中的第2章,第2.6节秘诀:添加具有自定义指针的滑块,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看

2.6 秘诀:添加具有自定义指针的滑块
iOS 6核心开发手册(第4版)
UISlider实例提供了一个控件,允许用户通过左右滑动一个小按钮(称为它的指针(thumb))来选择一个值。在iPod/Music应用程序中将会看到滑块,其中使用类控制音量。

滑块值默认最小为0.0,最大为1.0,不过,可以在IB属性检查器中或者通过设置minimumValue和maximumValue属性轻松地自定义它们。为了设置控件末端的样式,可以加入一对相关的图像(minimumValueImage和maximumValueImage),强制执行这些设置。例如,你可能想在控制温度设置的滑块一端显示一个雪人,并在另一端显示一杯冒热气的茶。还可以设置滑块指针前后的轨道颜色,以及调整minimumTrackTintColor和maximumTrackTintColor属性(在iOS 5.0及更高版本中可用)。

滑块的continuous属性控制当用户拖动指针时滑块是否持续地发送值更新。当把该属性设置为NO(默认为YES)时,如果用户释放指针,那么滑块只会发送一个动作事件。

2.6.1 自定义UISlider
除了设置最小和最大图像之外,UISlider类还允许直接更新其指针成分。可以通过调用setThumbImage:forState:把指针设置为所喜欢的任何图像。秘诀2-3利用这个选项动态地构建指针图像,如图2-4所示。指示性气泡作为自建指针的一部分出现在用户手指的上方。这个气泡同时以文本(气泡里面的数字)和图形(气泡的阴影反映了滑块值,当用户拖动时从黑色变为白色)方式提供了即时的反馈。


74d9318bd19bcf9102c80b153415d056536ecb49

图2-4 Core Graphics/Quartz调用使这个滑块的指针图像能够基于当前的滑块值变暗或变亮。
指针气泡里面的文本反映了这个值(当用户拖动滑块时,标题栏视图中拉长的图标将调整其大小,
以提供额外的反馈,作为秘诀示例代码中的目标—动作客户的示例)

注意:
在合成UIView时,iOS为视图的图层创建一个位图。使用自定义的视图或者自定义的生成位图之间的性能大致相同。
这类动态构建的反馈可以基于任何类型的数据。你可能从车载传感器上获取值或者浏览Internet,就像使用手指移动滑块一样容易。不管使用哪种真实的更新模式,动态更新肯定是图形密集型的,但它不像你想象的那样昂贵。Core Graphics调用速度很快,并且对于拇指大小的图像来说,内存需求是最低的。

这个特定的秘诀给滑块分配两幅指针图像。仅当在使用滑块(即UIControlStateHighlighted)时,才会出现气泡。在其正常状态(即UIControlStateNormal)下,只会显示较小的矩形指针。用户可以点按指针,查看当前的设置。特定于上下文的反馈气泡模拟在标准iOS键盘上高亮显示的字母。

为了在艺术作品中包容这些改变,滑块将在每种姿势的开始和末尾更新其框架。在触摸(UIControlEventTouchDown)时,框架的高度将扩展到60像素。在交互期间这提供了足够的空间来显示扩展的指针。

当手指从屏幕上移开(UIControlEventTouchUpInside或UIControlEventTouchUpOutside)时,滑块将返回到其以前的尺寸。这可以把空间归还给其他对象,确保滑块将不会激活,除非用户直接触摸它。

2.6.2 提高效率
秘诀2-3存储了滑块的一个以前的值,以最小化iOS上的总体计算负担。当滑块的值至少改变0.1或10%时,它将利用新的自定义图像更新指针。如果愿意,可以省略这项检查,并利用完全真实的更新运行秘诀。在测试时,这会提供相当快的更新,甚至在第一代iPod Touch装置上也是如此。在最新的iPhone和iPad上,根本不会有性能问题。

这个秘诀还避免了滑块末端的任何问题:即当指针到达0.9并且将不会正确地更新为1.0时。在这个秘诀中,提供了一个硬编码的解决办法,用于处理0.98以上的值,它通过强制执行更新来处理这种特定的情形。


e0f9a26312d01d078ec7ba18d2dac2eaf2fd01ca


f4234f92e15a7d0492a6449f7e80eade654e5ba0


96bfadbf1ebe687106abee769a842441b8095517
相关文章
|
iOS开发 UED
实现一个自定义的iOS动画效果
【4月更文挑战第9天】本文将详细介绍如何在iOS平台上实现一个自定义的动画效果。我们将通过使用Core Animation框架来实现这个动画效果,并展示如何在不同的场景中使用它。文章的目标是帮助读者理解如何使用Core Animation框架来创建自定义动画,并提供一个简单的示例代码。
183 1
|
10月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
188 1
|
11月前
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
160 5
|
11月前
|
Swift iOS开发 UED
实现一个自定义的iOS动画效果
本文介绍如何使用Swift和UIKit在iOS应用中实现一个自定义按钮动画,当按钮被点击时,其颜色从蓝色渐变为绿色,形状从圆形变为椭圆形,释放后恢复原状。通过UIView动画方法实现这一效果,代码示例展示了动画的平滑过渡和状态切换,有助于提升应用的视觉体验和用户交互。
175 1
|
Swift iOS开发 UED
揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【9月更文挑战第5天】本文通过具体案例介绍如何在iOS应用中使用Swift与UIKit实现自定义按钮动画,当用户点击按钮时,按钮将从圆形变为椭圆形并从蓝色渐变到绿色,释放后恢复原状。文中详细展示了代码实现过程及动画平滑过渡的技巧,帮助读者提升应用的视觉体验与特色。
187 11
|
Swift iOS开发 UED
【绝妙创意】颠覆你的视觉体验!揭秘一款iOS应用中令人惊叹的自定义动画效果,带你领略编程艺术的魅力所在!
【8月更文挑战第13天】本文通过一个具体案例,介绍如何使用Swift与UIKit在iOS应用中创建独特的按钮动画效果。当按钮被按下时,其形状从圆形变化为椭圆形,颜色则从蓝色渐变为绿色;释放后,动画反向恢复原状。利用UIView动画方法及弹簧动画效果,实现了平滑自然的过渡。通过调整参数,开发者可以进一步优化动画体验,增强应用的互动性和视觉吸引力。
149 7
|
iOS开发
iOS多线程之NSOperationQueue-依赖、并发数、优先级、自定义Operation等最全的使用总结
iOS多线程之NSOperationQueue-依赖、并发数、优先级、自定义Operation等最全的使用总结
736 0
|
Java 容器
自定义数据类型中的空指针异常
自定义数据类型中的空指针异常
117 2
|
存储 安全 数据库连接
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
【C++智能指针】深入探究C++智能指针:自定义删除器的设计与选择
765 0
|
API iOS开发
iOS 自定义转场动画 UIViewControllerTransitioning
iOS 自定义转场动画 UIViewControllerTransitioning
251 0