標籤:
在實際開發中,很多的時候是需要手動寫代碼來建立按鈕的。
在開發過程中,並不是每次都通過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];
IOS 開發筆記-基礎 UI(5)使用代碼建立按鈕