IOS開發之按鈕控件Button詳解


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;

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM