Button的设置及各种属性
(1)UIButton類繼承自UIControl,而UIControl繼承自UIView,因為UIView就是個矩形區域,所以UIButton實例化的對象其實都是一個矩形,雖然有各種圓角、增加聯系人、信息按鈕等等,給它們加個背景它們就現形成矩形了,而且它們有個frame屬性,這就是設置位置和矩形框的。
(2)UIButton創建一個按鈕不用實例化,也就是不用alloc和init,而是直接調用內置的幾個工廠方法即可,這一點和UILabel *label1=[[UILabel alloc]init]不同,而且這些類型里面最常用的時Custom類型,因為我們可以自定義圖片,以及圖片和文字的位置。
(3)按鈕有很多狀態,正常狀態Normal、被點擊時狀態Highlighted等等,所以可以分別對不同狀態設置屬性。
(4)其實按鈕最重要的不是上面那些設置屬性,而是按鈕關聯的操作是什么?即點擊后發生什么,這需要一個addtarget操作函數,如果多個按鈕用到同一個函數,則需要tag屬性來區別是哪個按鈕。
(5)要自定義按鈕,一種方式是我們先自定義一個繼承UIButton的類,然后對這個類進行重寫函數,相當于定制,最后用這個類去創建按鈕,這些按鈕也就具有自定義的樣式(這種方法只針對自定義按鈕類型有效)。
1 - (void)viewDidLoad { 2 //生成一個btn1對象,不需要alloc和init,而是直接用內置的工廠方法,有很多可CMD+點擊查看 3 UIButton *btn1=[UIButton buttonWithType:UIButtonTypeRoundedRect]; 4 //設置位置和寬高 5 btn1.frame=CGRectMake(30, 30, 300, 30); 6 //設置按鈕的文字,狀態有好幾種常用的時Normal和Highlighted(點擊時狀態),可CMD+點擊查看 7 [btn1 setTitle:@"點我啊!" forState:UIControlStateNormal]; 8 //設置點擊時的文本 9 [btn1 setTitle:@"我被點了!" forState:UIControlStateHighlighted]; 10 //設置文字顏色 11 [btn1 setTitleColor:[UIColor greenColor] forState:UIControlStateNormal]; 12 [btn1 setTitleColor:[UIColor yellowColor] forState:UIControlStateHighlighted]; 13 //設置點擊時按鈕背景顏色,呃,完全不起作用,即無效果 14 [btn1 setTintColor:[UIColor purpleColor]]; 15 //點擊時按鈕發光,就是在按鈕中間發亮光,這個有效果 16 btn1.showsTouchWhenHighlighted=YES; 17 //設置tag標簽,唯一標記用,可用于分辨是哪個按鈕控件 18 btn1.tag=1; 19 //設置背景顏色 20 btn1.backgroundColor=[UIColor redColor]; 21 //現在高版本的iOS里這個方法會讓人抓狂,因為我們發現,不設置背景時,圓角按鈕沒有邊框,所以上面設置frame其實意義不大 22 //設置了背景或者圖片后,背景是矩形,說好的圓角呢?坑爹呢! 23 //所以現在大多數開發都是用UIButtonTypeCustom,而不是UIButtonTypeRoundedRect 24 25 //最重要的添加觸發事件用戶交互 26 //self是指調用哪個對象的方法 27 //btnClick:是調用的方法,btnClick和btnClick:不一樣,后者表示有參數 28 //UIControlEventTouchUpInside是觸發事件,有很多,可以CMD+點擊查看 29 //這里三個參數都可以隨意更換,比如新建一個類Hi,在類里定義一個方法-(void)report; 30 //然后在此文件引入Hi.h頭文件,在這里實例化一個對象hi1,然后就可以用hi1代替self,用report代替btnClick 31 //意思就是點擊后調用的是hi1對象里面的report方法 32 [btn1 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; 33 34 //再增加一個按鈕 35 UIButton *btn2=[UIButton buttonWithType:UIButtonTypeContactAdd]; 36 btn2.frame=CGRectMake(30, 80, 300, 30); 37 //這個增加聯系人按鈕其實也是一個矩形,和上面的一樣,都是繼承自UIControl,而后者又繼承自UIView,所以是矩形 38 //雖然按鈕就一點點大,但點擊整個矩形區域都是相當于點擊按鈕 39 btn2.backgroundColor=[UIColor greenColor]; 40 //設置標簽 41 btn2.tag=2; 42 //增加事件:和btn1調用同一個方法,但問題是我們如果需要區分是哪個按鈕的話,就需要用到tag,并且把控件作為參數傳遞給btnClick 43 [btn2 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; 44 45 //再增加一個最常用的Custom按鈕,其他按鈕自己嘗試 46 UIButton *btn3=[UIButton buttonWithType:UIButtonTypeCustom]; 47 btn3.frame=CGRectMake(30 , 150 , 300, 90); 48 btn3.backgroundColor=[UIColor redColor]; 49 btn3.tag=3; 50 [btn3 addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside]; 51 //設置圖片背景被點擊時變暗(但沒有圖片背景時則無效果) 52 btn3.adjustsImageWhenHighlighted=YES; 53 //所以,增加圖片方式之一是增加背景圖片,這個圖片如小會被放大充滿整個背景 54 [btn3 setBackgroundImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal]; 55 //還有一種增加圖片的方式,是在按鈕上面加而不是背景,這種方式不會縮放圖片,而且會居中 56 [btn3 setImage:[UIImage imageNamed:@"logo.png"] forState:UIControlStateNormal]; 57 //設置按鈕文字,增加的文字會和setImage圖片一并居中,圖片在左邊,文字緊隨其后 58 [btn3 setTitle:@"自定義按鈕" forState:UIControlStateNormal]; 59 //如果需要重新排版這個圖片和按鈕文字的位置,則需要重寫UIButton類里面的兩個函數,點擊UIButton可查看 60 //- (CGRect)titleRectForContentRect:(CGRect)contentRect;文字相對于按鈕的位置 61 //- (CGRect)imageRectForContentRect:(CGRect)contentRect;圖片相對于按鈕的位置 62 //第一步:可以重新定義一個UIButton類叫myButton,在.m里重寫如下函數 63 //- (CGRect)titleRectForContentRect:(CGRect)contentRect{ 64 // return CGRectMake(50, 25, 100, 40); 65 //} 66 //- (CGRect)imageRectForContentRect:(CGRect)contentRect{ 67 // return CGRectMake(150, 25, 40, 40); 68 //} 69 //第二步,在這個文件中引入myButton.h頭文件,然后實例化btn3的時候,用myButton,而不用原始的UIButton 70 //myButton相當于稍微定制了一下原生的UIButton,所以前者實例出得對象也就具有定制效果 71 //這種方式僅對UIButtonTypeCustom有效,其他無效 72 73 //把三個按鈕顯示出來 74 [self.view addSubview:btn1]; 75 [self.view addSubview:btn2]; 76 [self.view addSubview:btn3]; 77 [super viewDidLoad]; 78 // Do any additional setup after loading the view, typically from a nib. 79 } 80 //增加一個參數,即由原先的-(void)btnClick{}變成如下 81 //因為我們知道這里都是按鈕對象,所以可以用(UIButton *)sender,但通常我們用通用指針id 82 -(void)btnClick:(id)sender{ 83 //把傳遞過來的控件參數轉化成按鈕 84 UIButton *btn=(UIButton *)sender; 85 //把btn.tag轉化成整型 86 NSLog(@"OMG,it is %i",(int)btn.tag); 87 }?
轉載于:https://www.cnblogs.com/crazygeek/p/5487021.html
總結
以上是生活随笔為你收集整理的Button的设置及各种属性的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux time
- 下一篇: Eclipse的环境设置