IOS 开发笔记-基础 UI(5)使用代码创建按钮

在实际开发中,很多的时候是需要手动写代码来创建按钮的。

在开发过程中,并不是每次都通过storyboard拖控件完成UI界面,因为storyboard上面的界面是“固定死”的,有时候可能会在程序运行过程中动态地添加一些新的控件到界面上,比如QQ,微信的聊天信息,是有人发出一条信息后才动态显示出来的。因此,需要掌握如何用代码动态地添加控件。实际上,storyboard的本质就是根据图形界面描述转成相应的代码(xml 文件)。还有一个原因,就是有的国内的公司,或者一些 IOS 开发的团队,并不使用故事板进行 UI 设计,所以掌握是很有必要的。

// 1.创建一个自定义的按钮

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

// 2.添加按钮

[self.view addSubview:btn];

// 3.设置按钮的位置和尺寸

btn.frame = CGRectMake(100, 100, 100, 100);

// 4.监听按钮点击(点击按钮后就会调用self的btnClick方法)

[btn addTarget:self action:@selector(btnClick) forControlEvents:UIControlEventTouchUpInside];

// 5.设置按钮在默认状态下的属性

// 5.1.默认状态的背景

[btn setBackgroundImage:[UIImage imageNamed:@"btn_01"] forState:UIControlStateNormal];

// 5.2.默认状态的文字

[btn setTitle:@"点我啊" forState:UIControlStateNormal];

// 5.3.默认状态的文字颜色

[btn setTitleColor:[UIColor redColor] forState:UIControlStateNormal];

// 6.设置按钮在高亮状态下的属性

// 6.1.高亮状态的背景

[btn setBackgroundImage:[UIImage imageNamed:@"btn_02"] forState:UIControlStateHighlighted];

// 6.2.高亮状态的文字

[btn setTitle:@"摸我干啥" forState:UIControlStateHighlighted];

// 6.3.高亮状态的文字颜色

[btn setTitleColor:[UIColor blueColor] forState:UIControlStateHighlighted];

一个UIColor代表一种颜色,通过UIColor的类方法,可以获得很多常用的颜色

+ (UIColor *)blackColor;      // 0.0 white 黑色

+ (UIColor *)darkGrayColor;   // 0.333 white 深灰色

+ (UIColor *)lightGrayColor;  // 0.667 white 亮灰色

+ (UIColor *)whiteColor;      // 1.0 white 白色

+ (UIColor *)grayColor;       // 0.5 white 灰色

+ (UIColor *)redColor;        // 1.0, 0.0, 0.0 RGB 红色

+ (UIColor *)greenColor;      // 0.0, 1.0, 0.0 RGB 绿色

+ (UIColor *)blueColor;       // 0.0, 0.0, 1.0 RGB 蓝色

+ (UIColor *)cyanColor;       // 0.0, 1.0, 1.0 RGB 青色

+ (UIColor *)yellowColor;     // 1.0, 1.0, 0.0 RGB 黄色

+ (UIColor *)magentaColor;    // 1.0, 0.0, 1.0 RGB 品红

+ (UIColor *)orangeColor;     // 1.0, 0.5, 0.0 RGB 橙色

+ (UIColor *)purpleColor;     // 0.5, 0.0, 0.5 RGB 紫色

+ (UIColor *)brownColor;      // 0.6, 0.4, 0.2 RGB 棕色

+ (UIColor *)clearColor;      // 0.0 white, 0.0 alpha 清除颜色(空色)

一个UIImage对象代表一张图片,一般通过imageNamed:方法就可以通过文件名加载项目中的图片(PNG格式的图片可以省略扩展名)

UIImage *image = [UIImage imageNamed:@"btn_01"];

UIButton自带了很多种不同的样式

在用代码创建按钮的同时指定按钮样式

UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];

UIButtonTypeCustom:无类型,按钮的内容需要自定义

UIButtonTypeDetailDisclosure:

UIButtonTypeInfoLight:

UIButtonTypeInfoDark:

UIButtonTypeContactAdd:

最后要有提交:

[self.view addSubview:btn];

按钮代码提交到了视图里。显示

以上要统一的写在viewDidLoad 对象方法里:

//视图加载完成需要调用的方法,继承的方法,需要调用父类的这个方法,千万不能丢
//通常视图控制器的初始化工作,都在这里执行
- (void)viewDidLoad{
    [super viewDidLoad];
    //创建按钮
    UIButton *btn = [[UIButton alloc] init];
    btn.frame = CGRectMake(30, 30, 200, 200);
    btn.backgroundColor = [UIColor redColor];
    [self.view addSubview:btn];

    [btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];
}

- (void)click:(id)sender
{
    NSLog(@"ddd");
}

addTarget进行监听设置,等价于故事板里的方法的连线,IBAction。如果是控件属性的连线,也就是 IBOutlet,直接赋值即可。

小结:

使用代码创建控件的步骤如下:

1> 使用控件对应类创建对象

2> 设置对象属性:frame\color\text\image\backgroundImage……

3> [self.view addSubview:btn];将控件添加到视图

设置控件监听方法的示例代码如下:

[btn addTarget:self action:@selector(click:) forControlEvents:UIControlEventTouchUpInside];

提示:

1> addTarget方法定义在UIControl类中,这意味着可以给所有继承自UIControl类的对象添加监听方法

2> 监听方法的第一个参数就是对象本身

3> 监听方法的第二个参数是监听控件的事件

viewDidLoad是视图加载完成后调用的方法,通常在此方法中执行视图控制器的初始化工作,在viewDidLoad方法中,一定不要忘记调用父类的方法实现!

[super viewDidLoad];

时间: 2024-10-10 00:34:43

IOS 开发笔记-基础 UI(5)使用代码创建按钮的相关文章

IOS 开发笔记-基础 UI(1)-简单的计算器

(1)UI是App的根基:一个App应该是先有UI界面,然后在UI的基础上增加实用功能 (2)UI相对简单易学:UI普遍是学习过程中最简单的一块,能快速拥有成就感和学习兴趣 (3)UI至关重要:开发中的绝大部分时间都在处理UI 谨记一条IOS软件开发定律:万物皆对象,UI界面上的每一个元素都是一个对象 IOS,android 软件开发过程 UIKit框架是跟UI有关系的,标签,文本,按钮,进度条,开关等控件,都是封装在UIKit框架内部的,UIKit框架中提供了丰富多彩的可视化组件元素,利用UI

IOS 开发笔记-基础 UI(3)按钮的使用(放大缩小、改变位置,首位式动画)和学习案例

UIKit框架提供了非常多的UI控件,但并不是每一个都很常用,有些控件可能1年内都用不上,有些控件天天用,比如UIButton.UILabel.UIImageView.UITableView等等,按钮控件是非常重要且比较基础的一个UI控件---UIButton,一般情况下,点击某个控件后,会做出相应反应的都是按钮,按钮的功能比较多,既能显示文字,又能显示图片,还能随时调整内部图片和文字的位置. 案例: 功能分析 (1)左下角4个方向按钮,控制头像按钮的位置 (2)右下角分别是放大.缩小按钮,控制

IOS 开发笔记-基础 UI(6)照片浏览器(控件的懒加载)

使用UIImageView.UILabel.UIButton实现一个综合小案例 功能分析 (1)点击箭头切换序号.图片.描述 (2)如果是首张图片,左边箭头不能点击 (3)如果是尾张图片,右边箭头不能点击 步骤分析 (1)搭建UI界面 (2)监听按钮点击 切换序号.图片.描述 1. 界面分析 1> 需要读取或修改的属性的控件 // 序号标签 // 图片 // 图片描述 // 左边按钮 // 右边按钮 2> 需要监听响应事件的对象,需要添加监听方法 // 左边按钮 // 右边按钮 uiimage

IOS 开发笔记-基础 UI(9)运行循环的概念

运行循环 int i = 0; // 死循环 while (YES) { printf("请输入一个整数,0表示退出:"); scanf("%d", &i); NSLog(@"%d", i); if (i == 0) { break; } } 以上程序,会不停的循环运行,但是,会在输入的时候中断,等待,有了输入之后,再继续循环运行,且一旦输入了复合条件的值,那么通过 if 判断,break退出循环体. 这就是简单的 runloop 模型.

IOS 开发笔记-基础 UI(7)汤姆猫(UIImageView 的序列帧动画、图片加载,方法重构、Bundle 图片素材)

使用UIImageView.UIButton实现一个综合小案例---汤姆猫 回忆:UIImageView 来自UIView,UIView 来自UIResponder,UIButton 来自UIControl,UIControl 来自UIView 单独看实现,代码实现其实比较简单,但是创意很难得,美工要求很高! 是一个了不起的游戏! 功能分析 (1)点击对应的按钮后,让汤姆猫展现对应的动画 步骤分析 (1)搭建UI界面,同时也是准备素材 (2)监听按钮点击 (3)根据点击的按钮执行对应的动画 说明

IOS 开发笔记-基础 UI(4)按钮的使用(transform属性)和学习案例

利用transform属性可以修改控件的位移(位置).缩放.旋转.经常用在动画里,比如旋转角度,动画缩放,平移等 先学几个 xcode 开发的小技巧: 故事板的viewcontroll,可以直接拖拽复制,且不同项目里的图片素材也可以相互拖拽复制使用,但是图片的拖拽复制要按option 健进行,否则就是剪切了.那么我们在开发到类似的一些项目的时候,不用每次都重写弄界面,那么可以直接拖拽拷贝故事板,图片拖拽要按住 option 键同时拽到 images.xcassets 目录下即可正常显式,且拖拽到

IOS 开发笔记-基础 UI(2)

1.公司标示一般使用反向域名 正向域名 www.xxx.com 用来标示一台网络主机,只要公司内部不重复就可以.反向域名 com.xxx.demo 用来标示产品,应该唯一标识. cn.com.abc.product,最后面是自己公司的产品名字 2..Bundle Identifier: 产品唯一标示符 Bundle ID = 公司的反向域名 + 产品名 1> 在模拟器上面,只能有一个唯一的标示符的应用程序2> 在AppStore上,所有的应用程序的Bundler ID都是唯一的 Bundle

IOS 开发笔记-基础 UI(8)控件连线的 strong 和 weak 设定

回忆 oc 的内存管理: objective-c 语法快速过(6)内存管理原理,objective-c 语法快速过(7)编译器特性ARC ARC是苹果为了简化程序员对内存的管理,推出的一套内存管理机制,使用ARC机制,对象的申请和释放工作会在运行时,由编译器自动在代码中添加retain和release 1> strong:强指针引用的对象,在生命周期内不会被系统释放,在OC中,对象默认都是强指针 2> weak:弱指针引用的对象,系统会立即释放,弱指针可以指向其他已经被强指针引用的对象 他们都

IOS研究之IOS开发笔记基础知识学习

本文是我的IOS学习笔记,都是基础的知识点,在这里记录下方面以后查询. 1,UIScrollView视图类能完成滚动的功能. 示例如下: UIScrollView *tableScrollView; tableScrollView=[[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, 320, 480)];//窗口大小 tableScrollView.contentSize=CGSizeMake(640, 480);//设置内容视图的大小 ta