《iOS 6核心开发手册(第4版)》——2.4节秘诀:构建按钮

简介:

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

2.4 秘诀:构建按钮
iOS 6核心开发手册(第4版)
当使用UIButtonTypeCustom风格时,将提供所有的按钮艺术。图像的数量依赖于你想要按钮如何工作。对于简单的按钮,可能添加单独一幅背景图像,当按钮被按下时,则改变标签颜色以高亮显示它。

对于切换风格的按钮,可能使用4种图像:用于正常表示中的“禁用”状态、高亮显示(即按下)时的禁用状态,另外两个用于“启用”状态。可以选择并设计交互细节,确保添加局部状态(秘诀2-1中的布尔型isOn实例变量),以将简单的按压式按钮扩展到切换状态。如果给按钮提供正常的图像,并且不指定高亮显示或禁用图像,iOS将自动生成这些变体。


59584403c0c8dda0a8a3b50761acde086ed496ed

秘诀2-1用于构建一个可以在启用和禁用之间切换的按钮,演示了构建自定义按钮的基本细节。点按该按钮时,它将从绿色(启用)切换成红色(禁用),或者从红色切换成绿色。这允许(非色盲)用户即时分辨出当前的状态。显示的文本强化了状态设置。图2-3(左图)显示了由这个秘诀创建的按钮。

这个秘诀中调用的UIImage大小可变的图像在按钮创建中起着重要的作用。大小可变的图像使得可以创建任意宽度的按钮,把圆形艺术作品转变成菱形按钮。可以指定限定范围(即不应该拉伸的艺术作品)。在这个示例中,限定范围是左、右的宽度均为110像素。如果想要把这个秘诀中使用的按钮宽度从300像素改为220像素,按钮将失去拉伸效果,如图2-3所示(右图)。


da3a993b611880ad21392e05d99dd5f4514431ee

图2-3 使用UIImage拉伸动作调整任意的按钮宽度。
设置左边的限定宽度,指定拉伸可以发生在什么位置

按钮可以根据状态指定图像和背景图像。图像设置按钮的实际内容。背景图像可以在图像和标题文本可能出现的地方提供大小可变的背景。秘诀2-1使用了背景图像,允许按钮的内置标题字段浮动在所提供的艺术作品上面。

注意:
可以通过调整图层属性,对视图和按钮的边角进行不同程度的圆整。向项目中添加Quartz Core框架,允许访问视图的图层,其中可以以编程方式设置图层的cornerRadius属性。然后把视图的clipsToBounds属性设置为YES,以实现Apple外观效果。

2.4.1 多行按钮文本
按钮的titleLabel属性允许修改标题属性,比如它的字体和换行模式。在这里,把字体设置为非常大的值(基本上确保需要对文本进行换行以正确显示),并且结合使用单词换行和居中对齐。

button.titleLabel.font = [UIFont boldSystemFontOfSize:36.0f];
[button setTitle:@"Lorem Ipsum Dolor Sit" forState:
      UIControlStateNormal];
button.titleLabel.textAlignment = UITextAlignmentCenter;
button.titleLabel.lineBreakMode = UILineBreakModeWordWrap;

默认情况下,按钮标签将从按钮的一端伸展到另一端。这意味着文本可能比你所想的扩展得更远,也许会超过按钮艺术作品的边缘。为了修正这个问题,可能通过在文本中嵌入换行符(即n),在单词换行模式中强制进行换行。这允许控制在按钮标题的每一行中出现多少文本。

2.4.2 给按钮添加动画式元素
在使用按钮时,可以在它们后面富有创意地分层放置艺术作品。可以使用标准的UIView层次结构执行该操作,确保对任何可能会遮挡按钮的视图禁止用户交互(setUserInteractionEnabled:NO)。图像视图内容会“泄露”给查看者,使你能够给按钮添加生动的动画元素。

秘诀2-1中使用的示例艺术作品是半透明的,允许试验这种方法。用于这个秘诀的示例代码将会添加可以分层放置在按钮和动画后面的可选的蝴蝶艺术作品。

在尝试显示某种状态(比如操作的进度)时,动画式元素特别有用。它们可以告知用户为什么按钮没有做出响应,或者创建不同的按下反应。例如,游戏中的涡轮增强式按钮可能在按下时提供额外的动力。动画式画面可以帮助用户辨别功能中的变化。

把艺术作品和文本与按钮实现分隔开可以在开发中起到其他的作用。在空按钮后面或顶部添加这些元素允许基于想要的部署局部化图形设计和表述,而不必直接重新设计按钮。

2.4.3 给按钮添加额外的状态
秘诀2-1创建了一个具有两种状态的按钮,提供了启用和禁用状态的视觉效果。有时,你可能想利用更容易区分的状态实现按钮。游戏提供了它的最常见的示例。许多开发人员实现了通常会展示4种状态的按钮:锁定级别、解锁但不起作用、解锁且部分起作用、解锁并掌控。

这个秘诀使用一个简单的布尔型开关(isOn实例变量)来存储启用/禁用状态,以及基于此状态来选择使用的艺术作品(在toggleButton:方法中)。可以通过把状态存储为一个整数并提供一个switch语句用于艺术作品选择,把这个示例扩展用于更广泛的艺术作品和按钮状态。

相关文章
|
安全 Android开发 iOS开发
Android vs. iOS:构建生态差异与技术较量的深度剖析###
本文深入探讨了Android与iOS两大移动操作系统在构建生态系统上的差异,揭示了它们各自的技术优势及面临的挑战。通过对比分析两者的开放性、用户体验、安全性及市场策略,本文旨在揭示这些差异如何塑造了当今智能手机市场的竞争格局,为开发者和用户提供决策参考。 ###
|
JavaScript 前端开发 iOS开发
ios样式开关按钮jQuery插件
ios样式开关按钮jQuery插件
353 7
|
开发框架 Android开发 iOS开发
探索安卓与iOS开发的差异:构建未来应用的指南
在移动应用开发的广阔天地中,安卓与iOS两大平台各占半壁江山。本文将深入浅出地对比这两大操作系统的开发环境、工具和用户体验设计,揭示它们在编程语言、开发工具以及市场定位上的根本差异。我们将从开发者的视角出发,逐步剖析如何根据项目需求和目标受众选择适合的平台,同时探讨跨平台开发框架的利与弊,为那些立志于打造下一个热门应用的开发者提供一份实用的指南。
389 32
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
【10月更文挑战第18天】本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户按下按钮时,按钮将从圆形变为椭圆形并从蓝色渐变为绿色;释放按钮时,动画恢复原状。通过UIView的动画方法和弹簧动画效果,实现平滑自然的动画过渡。
429 5
|
开发工具 Android开发 iOS开发
Android vs iOS:构建移动应用时的关键考量####
本文深入探讨了Android与iOS两大移动平台在开发环境、性能优化、用户体验设计及市场策略方面的差异性,旨在为开发者提供决策依据。通过对比分析,揭示两个平台各自的优势与挑战,帮助开发者根据项目需求做出更明智的选择。 ####
|
Swift iOS开发 UED
如何使用Swift和UIKit在iOS应用中实现自定义按钮动画
本文通过一个具体案例,介绍如何使用Swift和UIKit在iOS应用中实现自定义按钮动画。当用户点击按钮时,按钮将从圆形变为椭圆形,颜色从蓝色渐变到绿色;释放按钮时,动画以相反方式恢复。通过UIView的动画方法和弹簧动画效果,实现平滑自然的过渡。
466 1
|
Swift iOS开发 开发者
探索iOS开发:使用SwiftUI构建现代应用程序
【8月更文挑战第3天】在本文中,我们将一起潜入SwiftUI的世界,这是一个创新的框架,它让iOS应用的开发变得更加简单快捷。我们将通过一个实际的项目示例来展示如何利用SwiftUI的强大功能,快速搭建起一个既美观又实用的应用界面。无论你是刚入门的新手还是寻求提升的开发者,这篇文章都将为你提供宝贵的知识和技能。
346 10
|
Android开发 iOS开发 C#
Xamarin.Forms:从零开始的快速入门指南——打造你的首个跨平台移动应用,轻松学会用C#和XAML构建iOS与Android通用界面的每一个步骤
【8月更文挑战第31天】Xamarin.Forms 是一个强大的框架,让开发者通过单一共享代码库构建跨平台移动应用,支持 iOS、Android 和 Windows。使用 C# 和 XAML,它简化了多平台开发流程并保持一致的用户体验。本指南通过创建一个简单的 “HelloXamarin” 应用演示了 Xamarin.Forms 的基本功能和工作原理。
748 1
|
测试技术 虚拟化 iOS开发
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
这篇文章是iOS自动化测试方案的第二部分,详细介绍了在Xcode开发者工具中构建WebDriverAgent(WDA)应用到iPhone的全过程,包括环境准备、解决构建过程中可能遇到的错误,以及最终成功安装WDA到设备的方法。
2224 0
iOS自动化测试方案(二):Xcode开发者工具构建WDA应用到iphone
|
安全 Java Android开发
探索安卓与iOS开发的差异:构建未来应用的关键考量
【7月更文挑战第18天】在移动应用开发的广阔天地中,安卓和iOS两大平台各领风骚。本文将深入探讨这两个平台在开发过程中的主要差异,包括编程语言、用户界面设计、性能优化、安全性以及市场策略等方面。通过比较分析,旨在为开发者提供决策支持,帮助他们选择最适合自己项目需求的平台,同时考虑到用户体验和市场需求的变化,为未来的应用开发指明方向。