reference:http://mxcvns.lofter.com/post/1d23b1a3_685d59d
首先是繼承問題,UIButton繼承於UIControl,而UIControl繼承於UIView. 那么UIButton自然繼承了UIView的屬性.比如frame,layer等
至於UIButton的創建
UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.backgroundColor = [UIColor clearColor];
button.frame = CGRectMake(90, 90, 51, 24);
// 內存: 不需要釋放 因為是便利構造器
[button setTitle:@"請點擊" forState:UIControlStateNormal]; // 正常狀態
[button setTitle:@"點擊中" forState:UIControlStateHighlighted]; // 高亮狀態
[button setTitle:@"已點擊" forState:UIControlStateSelected];
button.selected = NO;
self.isSelected = 0;
[button setTitleColor:[UIColor clearColor] forState:UIControlStateNormal];
[button setTitleColor:[UIColor yellowColor] forState:UIControlStateSelected];
// 按鈕字體大小
button.titleLabel.font = [UIFont systemFontOfSize:30];
// 設置前景圖片 (當button frame改變的時候 圖片不變)
[button setImage:[UIImage imageNamed:@"BtnOff@2x.png"] forState:UIControlStateNormal];
// 禁止按鈕按下顏色變深效果
button.adjustsImageWhenHighlighted = NO;
[button setImage:[UIImage imageNamed:@"IconAdd.png"] forState:UIControlStateHighlighted];
// 設置背景圖片 (當button frame改變的時候 圖片不變)
// 創建一個UIImage對象, 圖片對象
[button setBackgroundImage:[UIImage imageNamed:@"FrendAdd.png"]
forState:UIControlStateNormal]; // 正常
[button setBackgroundImage:[UIImage imageNamed:@"IconAdd.png"]
forState:UIControlStateHighlighted]; // 高亮
// button最核心的方法
// 1.target 目標 就是button指定誰去執行方法
// 2.action 方法 就是執行什么
// 3.evunts 就是點擊按鈕時的狀態
// 4.UIControlEventTouchUpInside 當手離開觸發
[button addTarget:self action:@selector(buttonAction:)
forControlEvents:UIControlEventTouchUpInside];
[self.window addSubview:button];
對於在button上加圖片有2種方式
第一種:setBackGroudImage:圖片被拉伸
第二種:setImage: 圖片保持原大小
注意設置圖片時可能會出現渲染問題 此時的解決辦法
// 處理圖片渲染問題
UIImage *setImage = [UIImage imageNamed:@"setImage"];
UIImage *newSetImage = [setImage imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal];
給button設置成圓形
// 設置button的圓角半徑,這樣按鈕就變成了園的
button.layer.cornerRadius = 50;
// 將button上的圖片一樣變成圓形
[button.layer masksToBounds];
// 添加邊框
button.layer.borderWidth = 3;
// 邊框顏色 注意要加.CGColor屬性
button.layer.borderColor = [UIColor orangeColor].CGColor;
給button設置陰影
// 設置陰影 橫坐標向右 縱坐標向下 可負值
button.layer.shadowOffset = CGSizeMake(1, 1);
同時設置button上有文字和圖片,並且同時實現點擊效果
// 在UIButton中有三個對EdgeInsets的設置:ContentEdgeInsets、titleEdgeInsets、
imageEdgeInsets
[button setImage:[UIImage imageNamed:@"image.png"] forState:UIControlStateNormal];//給
button添加image
//設置image在button上的位置(上top,左left,下bottom,右right)這里可以寫負值,對上寫-10,那么image就象上移動10個像素
button.imageEdgeInsets = UIEdgeInsetsMake(5,13,21,button.titleLabel.bounds.size.width);
button如果設置了圖片的情況下 還有一個酷炫的點擊效果
button.showsTouchWhenHighlighted = YES;