前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >当iOS遇见UI

当iOS遇见UI

作者头像
博文视点Broadview
发布2020-06-11 10:56:55
7100
发布2020-06-11 10:56:55
举报

iOS应用开发的一项内容就是用户界面的开发。不管应用程序实际包含的逻辑有多复杂和优秀,如果这个应用没有提供友好的图形用户界面,那么也很难吸引最终用户。相反,如果为应用程序提供了友好的图形用户界面(GUI),最终用户通过手指滑动、点击等动作就可以操作整个应用,这个应用程序就会更受欢迎。作为一个程序设计者,必须优先考虑用户的感受,一定要让用户感到“爽”,应用程序才会被需要、被使用,这样的程序才有价值。

iOS提供了大量功能丰富的UI控件,开发者只要按一定规律把这些UI控件组合起来,就可以开发出优秀的图形用户界面。

UI控件概述

对于iOS应用程序的界面来说,每个UI控件都相当于一个小的积木块,将这些积木块组合、搭建在一起,就可以形成丰富多彩的UI界面。

iOS所有的UI控件都继承了UIView,而UIView继承了UIResponder基类,UIResponder代表用户操作的响应者。

活动、静态和被动控件

iOS的UI控件大致可分为如下三类。

活动控件:大部分活动控件都继承了UIControl基类,活动控件可以与用户交互,当用户操作活动控件时,该控件可以激发相应的事件,该事件就会激发该控件上为该事件绑定的事件处理方法。比如前面介绍的UIButton控件就是活动控件。 静态控件:静态控件通常只是继承了UIView,并不继承UIControl。静态控件只用于显示应用状态,用户不能对静态控件执行任何操作。 被动控件:被动控件可以接受用户操作,但它们通常仅用于接受用户输入的值,直到用户输入完成为止,这些控件不会激发任何IBAction方法。典型的被动控件就是文本框,这些文本框可用于接受用户输入,但它们不会激发任何方法。

在iOS应用中,UI控件所属的角色并不是一成不变的,有些控件可根据开发人员的需求选择多种模式运行。比如某些UIControl的子类控件,虽然它们本质上是动态控件,但开发人员可以将其设为被动控件,甚至可以将它们设为静态控件或不可见控件。当然,像UIButton之类的按钮控件,除了在活动模式下激发方法之外,它并没有太多其他的功能。

UIControl基类介绍

UIControl控件(如按钮和滑块)用于传递用户意图给应用程序,但程序一般不会直接使用UIControl控件,而是使用它的子类。UIControl作为基类,主要定义了所有子类的通用接口与行为结构。

由于所有UIControl的子类控件都代表能与用户交互的活动控件,因此UIControl的主要角色是定义通用接口,并为这些活动控件的事件机制提供通用的实现:当活动控件上发生指定的事件时,UIControl控件会初始化Action消息,并将该消息发送给事件处理方法。

前面在介绍iOS的事件处理机制时已经提到:如果一个UI控件继承了UIControl基类,就可通过Interface Builder将该控件关联到一个IBAction方法,这就为该控件的特定事件绑定了事件处理方法。

与通过Interface Builder关联IBAction方法本质相同的是,程序也可通过代码为UIControl的子类控件绑定事件处理方法。UIControl提供了如下常用的方法。

(void)addTarget:(id)target action:(SEL)actionforControlEvents:(UIControlEvents)events (void)removeTarget:(id)target action:(SEL)actionforControlEvents:(UIControlEvents)events (NSArray *)actionsForTarget:(id)targetforControlEvent:(UIControlEvents)controlEvent (NSSet *)allTargets (UIControlEvents)allControlEvents

每个UI控件都有4种不同的状态,并且它们在任意时刻总处于且只能处于以下状态之一。

普通:普通状态是所有控件的默认状态。 高亮:当UI控件需要突出显示时,它处于高亮状态。对按钮来说,当用户手指放在按钮上时,它才处于高亮状态。 禁用:当UI控件被关闭时,它处于禁用状态。禁用状态的UI控件是不可操作的,如果要禁用某个控件,则可以在Interface Builder中取消选中Enabled复选框,或将控件的enabled属性设为NO。 选中:选中状态通常用于标识该控件已启用或被选中。很多时候,选中状态与高亮状态比较相似,但UI控件可以在用户不再使用它时继续保持选中状态。

为了判断UI控件所处的状态,UIControl提供了一系列属性来检测该控件的状态,包括是否可用、是否高亮等。这些状态可通过如下常用属性来判断。

enabled:该属性判断该UIControl控件是否可用。 selected:该属性判断该UIControl控件是否被选中。 highlighted:该属性判断该UIControl控件是否高亮。

假如向界面设计文件中添加了一个按钮(UIButton),由于UIButton继承了UIControl基类,因此,可以在Xcode的属性检查器面板中看到如图1所示的UIControl的属性设置面板。

图1 UIControl的属性设置面板

有些时候,如果需要定制用户触碰UIControl控件时的外观,则可以通过重写UIControl控件的如下方法实现。

- beginTrackingWithTouch:withEvent::当用户开始触碰该UIControl控件时,将会自动激发该方法,重写该方法即可在用户开始触碰该UIControl时定制该控件的外观。 - continueTrackingWithTouch:withEvent::当用户连续触碰该UIControl控件时,将会自动激发该方法,重写该方法即可在用户连续触碰该UIControl时定制该控件的外观。 - endTrackingWithTouch:withEvent::当用户结束触碰该UIControl控件时,将会自动激发该方法,重写该方法即可在用户结束触碰该UIControl时定制该控件的外观。

本文摘自《疯狂iOS讲义(上)(第2版):Objective-C 2.0与iPhone/iPad应用开发基础》

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2015-06-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 博文视点Broadview 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档