第04章 更丰富的用户界面

控件

用户界面控件共有三种基本模式:

活动:比如按钮,点击会触发方法

静态:比如静态文本,只用作显示

被动:比如文本输入,不会触发任何方法,但是用户可以与之交互,并修改它的值。

?

在ios上,大多数控件都可以通过以上三种模式使用,并且几乎所有的控件都支持一种以上的模式。

所有ios控件,都是UIControl子类, 因此他们能够触发动作方法。

Inherits from
UIView : UIResponder : NSObject

UIImageView 图像视图

选中后,Editor->Size to Fit Content  使其大小与图片大小相同。

约束

蓝色实线代表拖动后,创建的约束。

分别表示距离顶部某个距离,处于水平居中的位置

option+选中控件,可以查看其位置尺寸信息。

属性检查器

上部分为选中控件的属性

下部分为其基类的属性

Mode属性:内容在视图内的显示方式

Tag属性:可用此值,在代码中,获取到此控件对象

Interaction属性:是否能与用户交互,是否支持多点触控

Alpha属性:透明度,0为完全透明,1为完全不透明

Background属性:背景颜色

Drawing复选框:

Opaque:不透明的,即不必在此控件视图背后显示任何东西,可加速显示。

Hidde:是否隐藏

Clear Graphics Context :先刷屏再绘制

Clip Subviews:如果视图包含子视图,此选项意思是,绘制其子视图时,进行裁剪。

Autosize Subviews:当视图大小变化时,自动调整其子视图大小

Streching属性:控制拉伸的一些参数

UILabel 标签

选中多个标签,Editor->Pin->Widths Equally 建立多个控件的宽度相等约束

UITextField 文本输入,属性比较多

Text属性: 纯文本或属性文本

Color:颜色

Font:字体

Alignment:对齐方式

Placeholder:占位符,文本输入前的灰色提示语

Background:背景图片

Disable:禁用的背景图片

BorderStyle:外框样式

Clear Button:文本输入时的清楚按钮(文本右侧的xx),这里可以设置何时出现此按钮。

Clear when editing begins:输入开始时,清除已有的文本

Min Font Size:显示的最小文本字号

Adjust to Fit:指定显示文本,是否随文本字段尺寸的减小而减小。

如果选中,那么整个文本在视图中都是可见的,即使文本大于所分配的空间。

键盘相关:

Capitalization: 首字母大小

Correction: 自动矫错

Keyboard: 键盘类型

Appearance:

Return Key: 返回键名字

以上控制输入此字段时,键盘的外观和行为。

Auto enable Return key:如果勾选,那么当输入为空时,return key不可用,除非用户有输入。

Secure:类似显示密码

输入完成后关闭键盘

当用户输入完成,点击键盘上的return键,此时会触发一个Did End On Exit事件

实现textfield的此事件响应即可。

- (IBAction)doneEditing:(UITextField *)sender

{

[sender resignFirstResponder];

}

问题来了,对于数字键盘等,没有return的键盘,如何处理?

常用方法:通过触摸背景,来关闭键盘

需要做以上工作:

1.将controller的view类型,改为UIControl,因为只有UIControl类型,才能触发动作方法。

2.关联动作方法

UISlider滑块控件

最小值,最大值,初始值

最小值图片,最大值图片

Update Envents  Continuous:滑块值改变时,触发一系列连续事件

批量添加顶部约束:

选中所有控件,Editor->Pin->Top Space to Super View

滑块滑动后,通过action方法更新label值

- (IBAction)valueChanged:(UISlider*)sender

{

self.sliderNumber.text = [NSString stringWithFormat:@"%d", (int)sender.value];

}

UISegmentedControl 分段控件

通过selectedSegmentIndex属性,获取哪段被选中了

momentary 瞬间的 设置在点击后是否恢复原样

tint 色彩

- (IBAction)segmentChanged:(UISegmentedControl*)sender

{

if (sender.selectedSegmentIndex == 0) {

self.leftSwitch.hidden = NO;

self.rightSwitch.hidden = NO;

self.button.hidden = YES;

}else if(sender.selectedSegmentIndex == 1){

self.leftSwitch.hidden = YES;

self.rightSwitch.hidden = YES;

self.button.hidden = NO;

}

}

UISwitch 开关

- (IBAction)switchChanged:(UISwitch *)sender

{

BOOL bIsOn = sender.isOn;

[self.leftSwitch setOn:bIsOn animated:YES];

[self.rightSwitch setOn:bIsOn animated:YES];

}

UIButton

UIImageView

UITextField

UILabel

UISlider

UISegmentedControl

UISwitch

UIButton

操作表单 action sheet

UIActionSheet

操作表单的作用是要求用户在两个以上的选项之间做出选择。用户必须点击其中一个,才能继续使用app。

操作表单通常用于确认可能有危险的或者不可逆的操作,比如删除对象。

警告视图 alert

UIAlertView

警告视图以蓝色的矩形框在屏幕中央显示,与操作表单一样,也必须有个选择,才能继续使用app。

警告通常用于通知用户发生了一些重要的或者不寻常的事情,可以只显示一个按钮。

以上两种,都为模态视图,modal view,要求做出选择,才能继续。

操作表单和警告视图都使用了委托,所以他们知道,在用户做出选择之后,应该通知哪个对象。

.h .m来回切换快捷方式 conmand+control +上下箭头键

操作表单委托 UIActionSheetDelegate

UIActionSheet *sheet = [[UIActionSheet alloc]

initWithTitle:@"Are you sure?"

delegate:self

cancelButtonTitle:@"No Way!"

destructiveButtonTitle:@"Yes, I‘m sure"

otherButtonTitles:@"Let me think", nil];

[sheet showInView:self.view];

委托方法

- (void)actionSheet:(UIActionSheet *)actionSheet

didDismissWithButtonIndex:(NSInteger)buttonIndex

用户选择后,会进入此委托方法

警告视图委托 UIAlertViewDelegate

UIAlertView *alert = [[UIAlertView alloc]initWithTitle:@"Title"

message:@"message"

delegate:self

cancelButtonTitle:@"cancle"

otherButtonTitles:@"other", nil];

同样,如果想在用户点击警告视图后,通知委托对象,实现其委托方法即可。

为button添加图像

1.如果想要修改xib文件中创建的对象,可以覆盖controller父类的viewDidLoad方法,用代码的方式修改。

IB中,并不一定能完成所有的工作。

控件状态:每个ios控件都有如下4种状态,任何时候,都处于并只能处于一种状态

1.普通(UIControlStateNormal):普通状态

2.突出显示(UIControlHighlighted):控件正在被使用的状态,比如button被按下

3.禁用(UIControlStateDisabled):可在IB种,设置Enable为NO

4.选中(UIControlStateSelected):只有一部分支持选中,而且控件被选中后,当用户不直接参与时,状态可继续保持。

某些ios控件的属性,可以在不同的状态下,接受不同的值。

比如button,在UIControlStateNormal状态下,设置一种图像,在UIControlHighlighted下设置另一种图像。

可拉伸图像:

定义图像边缘范围内的像素,不被拉伸。

比如此图像,附着在这么长的button上,将会被左右拉伸

此时定义边缘图像为(0,12,0,12)即左边,右边12个像素范围的图像不被拉伸,即图像边缘的灰色边框,如果拉伸就很丑了

时间: 2024-08-09 22:02:34

第04章 更丰富的用户界面的相关文章

<<Python基础教程>>学习笔记 | 第04章 | 字典

第04章:字典 当索引不好用时 Python唯一的内建的映射类型,无序,但都存储在一个特定的键中,键可以使字符,数字,或者是元祖. ------ 字典使用: 表征游戏棋盘的状态,每个键都是由坐标值组成的元祖 存储文件修改的次数,文件名作为键 数字电话/地址薄 函数传递值def func(x,*args,**args): 如果要建公司员工与座机号的列表,如果要获得Alice的座机只能这么找 >>> names   = ['Alice','Bob','Tom'] >>> n

异步编程系列第04章 编写Async方法

p { display: block; margin: 3px 0 0 0; } --> 写在前面 在学异步,有位园友推荐了<async in C#5.0>,没找到中文版,恰巧也想提高下英文,用我拙劣的英文翻译一些重要的部分,纯属娱乐,简单分享,保持学习,谨记谦虚. 如果你觉得这件事儿没意义翻译的又差,尽情的踩吧.如果你觉得值得鼓励,感谢留下你的赞,愿爱技术的园友们在今后每一次应该猛烈突破的时候,不选择知难而退.在每一次应该独立思考的时候,不选择随波逐流,应该全力以赴的时候,不选择尽力而

第04章-VTK基础(7)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] [本小节内容对应原书的第83页至第87页] 4.16 动画 动画是可视化等系统的重要模块: 通过

第04章-VTK基础(5)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] [本小节内容对应原书的第63页至第70页] 4.11 文本标注 VTK提供了两种方法用于标注图像

公开课视频-《第04章 部署-Microsoft-服务器虚拟化-Hyper-V 2012 R2》

公开课报名: <大企业云桌面部署实战>-公开课 https://ke.qq.com/course/136167#term_id=100152811 视频: 链接:http://pan.baidu.com/s/1i5Le0lv   密码:ic6r 2016-06-22-第04章 部署-Microsoft-服务器虚拟化-Hyper-V 2012 R2.avi 第04章 部署-Microsoft-服务器虚拟化-Hyper-V 2012 R2-补充 **************************

第04章-VTK基础(4)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] [本小节内容对应原书的第52页至第63页] 4.6 控制3D Props VTK中的渲染窗口渲染

第04章-VTK基础(3)

ExecutorService 建立多线程线程池的步骤: 线程池的作用: 线程池作用就是限制系统中执行线程的数量. 根据系统的环境情况,可以自动或手动设置线程数量,达到运行的最佳效果:少了浪费了系统资源,多了造成系统拥挤效率不高.用线程池控制线程数量,其他线程排队等候.一个任务执行完毕,再从队列的中取最前面的任务开始执行.若队列中没有等待进程,线程池的这一资源处于等待.当一个新任务需要运行时,如果线程池中有等待的工作线程,就可以开始运行了:否则进入等待队列. 为什么要用线程池: 1.减少了创建和

JavaScript权威指南第04章 表达式和运算符

www.qdmm.com/BookReader/1845423,31051137.aspx www.qdmm.com/BookReader/1845423,31073665.aspx www.qdmm.com/BookReader/1845423,31088923.aspx www.qdmm.com/BookReader/1845423,31104070.aspx www.qdmm.com/BookReader/1845423,31114804.aspx www.qdmm.com/BookRea

第04章-VTK基础(6)

[译者:这个系列教程是以Kitware公司出版的<VTK User's Guide -11th edition>一书作的中文翻译(出版时间2010年,ISBN: 978-1-930934-23-8),由于时间关系,我们不能保证每周都能更新本书内容,但尽量做到一周更新一篇到两篇内容.敬请期待^_^.欢迎转载,另请转载时注明本文出处,谢谢合作!同时,由于译者水平有限,出错之处在所难免,欢迎指出订正!] [本小节内容对应原书的第70页至第83页] 4.13 数据变换 在4.6节里的"Ass