iOS学习21之UILabel, UITextField, UIButton, UIImageView
1.UILabel
1> 概述
UILabel (标签): 是显示文本的控件。在App中 UILabel 是出现频率最高的控件
UILabel 是 UIView 子类,作为子类一般是为了扩充父类的功能, UILabel 扩展了文字显示的功能, UILabel 是能显示文字的视图。
2> 创建UILabel的步骤
创建UILabel与创建UIView的步骤很相似。
开辟空间并初始化(如果本类有初始化方法,则使用自己的初 始化方法;否则使用父类的)
设置文本控制相关的属性
添加到父视图上,用以显示
释放所有权(只是做了引用计数-1)---ARC不需要,系统会自动添加内存回收代码
3> UILabel属性设置
红色为常用的属性,必须记住
代码案例:
// 1.创建UILabel对象并初始化
UILabel *usernameLabel = [[UILabel alloc] init];
UILabel *inputUsernameLabel = [[UILabel alloc] init]; // 2.设置属性
usernameLabel.frame = CGRectMake(, , , ); inputUsernameLabel.frame = CGRectMake(CGRectGetMaxX(usernameLabel.frame) + kSpace,
CGRectGetMinY(usernameLabel.frame),
CGRectGetWidth(self.window.frame) - CGRectGetWidth(usernameLabel.frame) - (CGRectGetMinX(usernameLabel.frame) * + kSpace),
CGRectGetHeight(usernameLabel.frame)); // CGRectGet... 获取某一个视图的frame值 // 设置文本信息
usernameLabel.text = @"用户名:";
inputUsernameLabel.text = @"请输入用户名"; // 设置文本的对齐方式(居中|居左|居右)
usernameLabel.textAlignment = NSTextAlignmentRight;
inputUsernameLabel.textAlignment = NSTextAlignmentCenter; // 设置文本内容颜色
usernameLabel.textColor = [UIColor purpleColor];
inputUsernameLabel.textColor = [UIColor purpleColor]; // 设置字体
usernameLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:];
inputUsernameLabel.font = [UIFont fontWithName:@"Helvetica-Bold" size:]; // 打印所有的字体样式
NSLog(@"%@", [UIFont familyNames]); // 设置显示行数
usernameLabel.numberOfLines = ;
// 断行模式
usernameLabel.lineBreakMode = NSLineBreakByWordWrapping; // 按照单词换行
// 阴影颜色
usernameLabel.shadowColor = [UIColor blackColor];
// 阴影大小
usernameLabel.shadowOffset = CGSizeMake(, );
使用CGRectGet...可以获取任意一个视图的位置坐标,这样可以提高代码的健壮性,修改时只需要修改一处就可以修改所有相关视图的位置
2.UITextField
1> 概述
UITextField(输入框):是控制文本输入和显示的控件。在App中UITextField出现频率也比较高。
iOS系统借助虚拟键盘实现输入,当点击输入框,系统会自动调出键盘,方便你进一步操作。在你不需要输入的时候,可以使用收回键盘的方法,收回弹出的键盘。
UITextField和UILabel相比,UILabel主要用于文字显示,不能编辑; UITextField允许用户编辑文字(输入)。
2> 创建UITextField步骤
创建UITextField与创建UILabel的步骤很相似。
开辟空间并初始化(如果本类有初始化方法,则使用自己的初始化方法;否则使用父类的)
设置文本显示、输入等相关的属性
添加到父视图上,用以显示
释放对象所有权(MRC需要)
3> UITextField文本显示属性
/**
* 1.创建UITextField对象并初始化
*/
UITextField *textField = [[UITextField alloc] initWithFrame:CGRectMake(, , , )]; /**
* 2.设置属性
*/
textField.backgroundColor = [UIColor cyanColor]; // 文本内容
textField.text = @"用户名";
textField.placeholder = @"请输入用户名";
textField.textColor = [UIColor blackColor]; // 文本对齐方式
textField.textAlignment = NSTextAlignmentCenter;
4> UITextField输入控制属性
// 是否允许编辑
textField.enabled = YES; // 开始编辑时是否清空输入框的内容
textField.clearsOnBeginEditing = YES; // 是否安全输入(输入密码时使用)
textField.secureTextEntry = NO; // 设置键盘样式
textField.keyboardType = UIKeyboardTypeEmailAddress; // 键盘右下角return按钮类型(枚举值)
textField.returnKeyType = UIReturnKeySend;
5> UITextField外观控制属性
// 边框样式
textField.borderStyle = UITextBorderStyleRoundedRect; // 自定义输入视图(默认是键盘)
UIView *view = [[UIView alloc] initWithFrame:CGRectMake(, , , )];
view.backgroundColor = [UIColor cyanColor];
textField.inputView = view; // 输入框上方的内容
textField.inputAccessoryView = view; // 清除按钮格式(x)
textField.clearButtonMode = UITextFieldViewModeWhileEditing; // 输入框左视图
textField.leftView = view; textField.leftViewMode = UITextFieldViewModeAlways;
6> UITextField常用代理方法
设置代理的三部曲
① 设置代理
textField.delegate = self;
② 遵守协议(在.h文件或.m文件的延展中)
@interface AppDelegate : UIResponder <UIApplicationDelegate, UITextFieldDelegate>
UITextFieldDelegate 为 UITextField 遵守的协议
③ 实现协议(在AppDelegate.m文件或控制器的.m文件中)
// 将要开始编辑
- (BOOL)textFieldShouldBeginEditing:(UITextField *)textField
{
NSLog(@"将要开始编辑");
return YES;
} // 已经开始编辑
- (void)textFieldDidBeginEditing:(UITextField *)textField
{
NSLog(@"已经开始编辑");
} // 将要完成编辑
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
{
NSLog(@"将要完成编辑");
return YES;
} // 已经完成编辑
- (void)textFieldDidEndEditing:(UITextField *)textField
{
NSLog(@"已经完成编辑");
} // 点击键盘return键的时候,键盘回收
- (BOOL)textFieldShouldReturn:(UITextField *)textField
{
[textField resignFirstResponder]; // 释放第一响应者,使键盘回收
NSLog(@"点击键盘return键");
return YES;
}
3.UIButton
1> 概述
UIButton(按钮):是响应用户点击的控件。在App中UIButton是出现频率很高的控件。
UIButton与UILabel、UITextField侧重点不同,侧重于处理用户交互事件。当然UIButton类也提供了一些方法控制按钮外观。
2> 使用UIButton的步骤
创建UIButton与创建UILabel、UITextField、UIView的步骤很相似。
创建button对象(如果本类有初始化方法,则使用自己的初始化方法;否则使用父类的)
设置按钮相关的属性
为按钮添加点击事件
添加按钮到父视图上,用以显示
按钮无需释放(一般情况创建UIButton都使用自己的便利构造器方法,无需释放对象的所有权)
3> UIButton外观控制属性
// 设置背景图片
// 创建UIImage对象
UIImage *xiaoPangImage = [UIImage imageNamed:@"xiaopang.jpg"]; // 普通状态下
[button setBackgroundImage:xiaoPangImage forState:UIControlStateNormal]; // 高亮状态下
[button setBackgroundImage:[UIImage imageNamed:@"huaiyu.jpg"] forState:UIControlStateHighlighted]; // 设置前景图片(必须是镂空的图)
[button setImage:[UIImage imageNamed:@"222.png"] forState:UIControlStateNormal];
// 设置标题 普通状态下
[button setTitle:@"点我啊..." forState:UIControlStateNormal]; // 设置标题 高亮状态下(点住)
[button setTitle:@"在点我..." forState:UIControlStateHighlighted]; // 设置标题颜色
button.tintColor = [UIColor redColor];
4> UIButton添加事件
UIButton从父类UIControl那继承了控制相关的方法, 如添加事件、移除事件等。
// 单击状态下
[button addTarget:self action:@selector(buttonClick) forControlEvents:UIControlEventTouchUpInside];
// 实现按钮点击事件
- (void)buttonClick:(UIButton *)sender { NSLog(@"点我干啥"); sender.backgroundColor = [UIColor colorWithRed:arc4random() % / 255.0 green:arc4random() % / 255.0 blue:arc4random() % / 255.0 alpha:]; // 移除事件
[sender removeTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchUpInside]; }
4.UIImageView
1> 概述
UIImageView是iOS中用于显示图片的类,iOS中几乎所有看到的图片,都是由这个类来显示的。
2> UIImageView的创建
// 图片文件路径
NSString *path = [[NSBundle mainBundle] pathForResource:@"" ofType:@"jpg"];
// 创建一个UIImage对象,使用initWithContentOfFile: 方法
UIImage *image = [UIImage imageWithContentsOfFile:path];
// 创建一个UIImageView对象,使用initWithImage: 方法
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(, , , );
[self.view addSubview:imageView];
3> UIImageView的动态图(实现动画)
animationImages // 设置一组动态图
animationDuration // 设置播放一组动态图片的时间
animationRepeatCount // 设置重复次数
startAnimating // 开始动画
stopAnimating // 结束动画
// 添加动态植物
UIImageView *flowerImageView = [[UIImageView alloc] initWithFrame:CGRectMake(, , , )]; // 准备图片数组
NSMutableArray *imageArray = [NSMutableArray array];
for (int i = ; i <= ; i++) {
// 图片名
NSString *nameStr = [NSString stringWithFormat:@"flower%d.tiff", i];
// 创建UIImage对象
UIImage *image = [UIImage imageNamed:nameStr];
// 将UIImage对象添加到数组中
[imageArray addObject:image];
} // 设置一组动态图片
flowerImageView.animationImages = imageArray; // 设置动画播放时间
flowerImageView.animationDuration = ;
// 设置重复次数
flowerImageView.animationRepeatCount = ; // 默认为0,0表示无限循环
// 开始动画
[flowerImageView startAnimating]; [bgImageView addSubview:flowerImageView];
iOS学习21之UILabel, UITextField, UIButton, UIImageView的更多相关文章
- IOS学习笔记(四)之UITextField和UITextView控件学习
IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...
- iOS: 学习笔记, 使用performSelectorOnMainThread及时刷新UIImageView
在iOS中, 界面刷新在主线程中进行, 这导致NSURLSession远程下载图片使用UIImageView直接设置Image并不能及时刷新界面. 下面的代码演示了如何使用 performSelect ...
- UILabel,UITextField,UIButton三大基础控件总结
(一)UILabel空件 属性: 1.背景颜色 label.backgroundColor = [UIColor ***]; 2. 显示文字: label.text = @"******&q ...
- iOS 学习 - 21 系统自带解析 XML
准备工作: new -> file -> other -> Empty ,在 Save As: 中随便起个名字后缀为 .xml 拷贝下面 <person> <stu ...
- 1.注册或登录页面设计:UILabel,UIButton,UITextField
学习iOS开发已经有一段时日了,之前一直没有系统的对iOS开发的相关知识进行归纳总结,导致很多知识点云里雾里在脑子里形不成iOS开发的思想,现将自己在学习过程中遇到的一些知识进行总结,希望能对iOS初 ...
- iOS学习——UI基础UIButton(七)
前面写了UIWindow.UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实现是使用系统提供的各种控件 ...
- iOS学习笔记(七)——UI基础UIButton
前面写了UIWindow.UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实现是使用系统提供的各种控件 ...
- iOS UILabel UITextView UIButton 等等显示文本行间距
iOS UILabel UITextView UIButton 等等显示文本行间距都用如下方法 NSMutableParagraphStyle *paragraphStyle = [[NSMutab ...
- iOS开发-UILabel和UIButton添加下划线
关于UILabel和UIButton有的时候需要添加下划线,一般有两种方式通过默认的NSMutableAttributedString设置,第二种就是在drawRect中画一条下划线,本文就简单的选择 ...
随机推荐
- notifyDataSetInvalidated和notifyDataSetChanged有什么区别
notifyDataSetChanged方法通过一个外部的方法控制如果适配器的内容改变时需要强制调用getView来刷新每个Item的内容.public void notifyDataSetChang ...
- C++ STL string
要想使用标准C++中string类,必须要包含 #include <string>// 注意是<string>,不是<string.h>,带.h的是C语言中的头文件 ...
- Struts2之类型转换器
一.类型转换器的应用场景 类型转换是OGNL的一部分,默认的八种基本类型.String.Date会使用类型转换,但是更复杂的类型转换就需要我们自定义了(虽然这个东西一般根本用不到),OGNL可以应用在 ...
- JAVA中读取xls数据方法介绍
用例编号(UI-0001) 用例名称({验证页面跳转|验证元素文本}-简要明确表述) 验证类型 是否执行 初始URL 初始元素xpath 目标元素xpath 目标元素属性 期望结果 UI-0001 验 ...
- WindowManagerPolicy的后缀 解释
转自:http://blog.csdn.net/hunanwy/article/details/8563090 Ti,called from the input thread. Input threa ...
- 苹果开发者账号申请时报错提示错误:Legal Entity Name
he information you entered did not match your profile in the D&B database. Before submitting you ...
- MyEclipse2014配置Tomcat开发JavaWeb程序JSP以及Servlet(转载)
转载地址:http://blog.csdn.net/21aspnet/article/details/21867241 1.安装准备 1).下载安装MyEclipse2014,这已经是最新版本. 2) ...
- PHP判断当前访问的是 微信、iphone、android 浏览器
<?phpvar ua = navigator.userAgent.toLowerCase(); if (ua.match(/MicroMessenger/i)=="micromess ...
- PHP二维数组的分页
方法一: <?php $arr_click = array( array( 'clicks' => 3, 'clickDate' =>'2015-10-11' ), array( ' ...
- hdu 4036 2011成都赛区网络赛F 模拟 **
为了确保能到达终点,我们需要满足下面两个条件 1.能够到达所有山顶 2.能够在遇到苦土豆时速度大于他 二者的速度可以用能量守恒定律做,苦土豆的坐标可通过三角形相似性来做 #include<cst ...