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];

 

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。