作者聲明
因個人能力問題,文中不免會有錯誤之處,歡迎各位讀者交流,批評,指正!
摘要
本文通過一個實例來學習利用代碼添加按鈕和文本框的方法。
基本思路
- 重寫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相關的其它方法。