作者声明
因个人能力问题,文中不免会有错误之处,欢迎各位读者交流,批评,指正!
摘要
本文通过一个实例来学习利用代码添加按钮和文本框的方法。
基本思路
- 重写viewController的对象方法- (void)viewDidLoad。
- 在该方法里面创建按钮或者文本框。
- 设置按钮和文本框的属性(normal和highlight)。
- 为控件添加监听事件(其中可以调用其他方法)
- 将控件放置在父view中。
实例
代码如下:
//
// ViewController.m
// 按钮操作—利用代码添加按钮
//
// Created by dqw on 15/5/6.
// Copyright (c) 2015年 itcast. All rights reserved.
//
#import "ViewController.h"
@interface ViewController ()
@end
@implementation ViewController
//控制器的view加载完毕后会调用该方法。
- (void)viewDidLoad {
// 要首先调用父类的该方法 。
[super viewDidLoad];
#pragma 创建按钮。
UIButton *but = [[UIButton alloc]init];
// 设置按钮的位置和长宽。
CGRect frame = CGRectMake(0, 0, 100, 100);
but.frame = frame;
// 为按钮设置背景图片。
// 该方法默认从main bundle里面加载图片,因为图片已经加载在suppos里面,所以可以不用写绝对路径。
UIImage *imageforNormal = [UIImage imageNamed:@"btn_01.png"];
[but setBackgroundImage:imageforNormal forState:UIControlStateNormal];
UIImage *imageforHigtlight = [UIImage imageNamed:@"btn_02.png"];
[but setBackgroundImage:imageforHigtlight forState:UIControlStateHighlighted];
// 为按钮设置标题。
[but setTitle:@"点我啊" forState:UIControlStateNormal];
[but setTitleColor:[UIColor greenColor] forState:UIControlStateNormal];
[but setTitle:@"找死啊" forState:UIControlStateHighlighted];
[but setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
// 为按钮设置监听事件。其中的envents如果被触发,则self(当前控制器)就会调用butClick方法。
// 其实不添加该代码的话,也可以对按钮进行监听。
[but addTarget:self action:@selector(butClick) forControlEvents:UIControlEventTouchUpInside];
// 将按钮放在符view中。
[self.view addSubview:but];
#pragma 代码创建文本框。
UITextField *text = [[UITextField alloc]init];
// 设置文本框位置和大小。
CGFloat X = self.view.center.x ;
CGFloat Y = self.view.center.y ;
text.center = CGPointMake(X, Y);
text.bounds = CGRectMake(0, 0, 100, 30);
// 设置其背景色。
[text setBackgroundColor:[UIColor greenColor]];
// 放置文本框。
[self.view addSubview:text];
}
// 定义一个方法。
- (void)butClick
{
NSLog(@"单击了but");
}
@end
重点 难点 注意点
- 在重写- (void)viewDidLoad方法时不要忘了调用[super viewDidLoad]。
- 加载图片的时候注意路径(本例中简单)。
- 控件的bounds属性是CGRect类型。
- 深刻体会并理解下面的方法各参数。
// 为按钮设置监听事件。其中的envents如果被触发,则self(当前控制器)就会调用butClick方法。
// 其实不添加该代码的话,也可以对按钮进行监听。
[but addTarget:self action:@selector(butClick) forControlEvents:UIControlEventTouchUpInside];
待完善内容
- 加载图片的方法。
- 各触发事件。
- add相关的其它方法。