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的更多相关文章

  1. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

  2. iOS: 学习笔记, 使用performSelectorOnMainThread及时刷新UIImageView

    在iOS中, 界面刷新在主线程中进行, 这导致NSURLSession远程下载图片使用UIImageView直接设置Image并不能及时刷新界面. 下面的代码演示了如何使用 performSelect ...

  3. UILabel,UITextField,UIButton三大基础控件总结

    (一)UILabel空件 属性: 1.背景颜色 label.backgroundColor = [UIColor ***]; 2. 显示文字: label.text = @"******&q ...

  4. iOS 学习 - 21 系统自带解析 XML

    准备工作: new -> file -> other -> Empty ,在 Save As: 中随便起个名字后缀为 .xml 拷贝下面 <person> <stu ...

  5. 1.注册或登录页面设计:UILabel,UIButton,UITextField

    学习iOS开发已经有一段时日了,之前一直没有系统的对iOS开发的相关知识进行归纳总结,导致很多知识点云里雾里在脑子里形不成iOS开发的思想,现将自己在学习过程中遇到的一些知识进行总结,希望能对iOS初 ...

  6. iOS学习——UI基础UIButton(七)

    前面写了UIWindow.UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实现是使用系统提供的各种控件 ...

  7. iOS学习笔记(七)——UI基础UIButton

    前面写了UIWindow.UIViewController,那些都是一些框架,框架需要填充上具体的view才能组成我们的应用,移动应用开发中UI占了很大一部分,最基础的UI实现是使用系统提供的各种控件 ...

  8. iOS UILabel UITextView UIButton 等等显示文本行间距

    iOS UILabel  UITextView UIButton 等等显示文本行间距都用如下方法 NSMutableParagraphStyle *paragraphStyle = [[NSMutab ...

  9. iOS开发-UILabel和UIButton添加下划线

    关于UILabel和UIButton有的时候需要添加下划线,一般有两种方式通过默认的NSMutableAttributedString设置,第二种就是在drawRect中画一条下划线,本文就简单的选择 ...

随机推荐

  1. Mac怎么读写NTFS格式?Mac读写NTFS格式硬盘教程

    我们都知道NTFS 格式的 Windows 硬盘在Mac OS X系统下只能读取不能写入,这一问题一直困扰着很多新老Mac 用户,一般的的解决办法就是安装 NTFS 插件来让 OS X 支持 NTFS ...

  2. entOS7安装iptables防火墙,试验未通过

    CentOS7默认的防火墙不是iptables,而是firewalle. 安装iptable iptable-service #先检查是否安装了iptables service iptables st ...

  3. 理解Miller-Rabbin算法

    转自:http://www.dxmtb.com/blog/miller-rabbin/ 普通的素数测试我们有O(√ n)的试除算法.事实上,我们有O(slog³n)的算法. 定理一:假如p是质数,且( ...

  4. 将前台json对象传入java后台

    前台json格式的数据如何传入后台 1. 将要传入后台的数据组装成JSON格式的字符串: var jsonStr = [{'name':'jim' , 'age':20} , {'name':'kin ...

  5. rpm -qc 来查找安装包的配置文件

    rpm -qc elasticsearch /etc/elasticsearch/elasticsearch.yml /etc/elasticsearch/jvm.options /etc/elast ...

  6. zTree控件的使用

    最常用的使用方式是json格式 .net递归实现对象生成json格式字符串 代码: using System; using System.Collections.Generic; using Syst ...

  7. 【JAVA单例模式详解】

    设计模式是一种思想,适合于任何一门面向对象的语言.共有23种设计模式. 单例设计模式所解决的问题就是:保证类的对象在内存中唯一. 举例: A.B类都想要操作配置文件信息Config.java,所以在方 ...

  8. python多线程之Event(事件)

    #!/usr/bin/env python # -*- coding: utf-8 -*- import time from threading import Thread, Event import ...

  9. 序列化悍将Protobuf-Net,入门动手实录

    最近在研究web api 2,看了一篇文章,讲解如何提升性能的, 在序列化速度的跑分中,Protobuf一骑绝尘,序列化速度快,性能强,体积小,所以打算了解下这个利器 1:安装篇 谷歌官方没有提供.n ...

  10. C#交互功能的演化

    (此文章同时发表在本人微信公众号“dotNET每日精华文章”,欢迎右边二维码来关注.) 题记:Miguel de Icaza在最近发表的一篇博文中畅谈了Mono及其相关产品中的C#交互特性的演化情况. ...