UIButton 圓角 邊框顏色 字體大小 文字對齊 圖片大小

 

UIButton git

UIButton 其實包含 UIImageView 和 UILabel 兩個控件,UIButton繼承於UIControl,因此有addtarget監聽事件github

//inherits from: UIControl : UIView : UIResponder : NSObject

一、類型:

//初始化一個按鈕對象
//   建立   圓角矩形   的按鈕    
        UIButton *button1 = [UIButton buttonWithType:UIButtonTypeRoundedRect];    
    
    //     button  類型   有如下 6 種,    
    //    typedef enum {    
    //        UIButtonTypeCustom = 0,          自定義風格    
    //        UIButtonTypeRoundedRect,         圓角矩形    
    //        UIButtonTypeDetailDisclosure,    藍色小箭頭按鈕,主要作詳細說明用    
    //        UIButtonTypeInfoLight,           亮色感嘆號    
    //        UIButtonTypeInfoDark,            暗色感嘆號    
    //        UIButtonTypeContactAdd,          十字加號按鈕    
    //    } UIButtonType;

二、位置

//設置 button在 view 上的  位置、尺寸 
 button1.frame = CGRectMake(20, 20, 280, 20);

三、顏色、邊框效果、邊框顏色

//背景顏色
button1.backgroundColor = [UIColor clearColor];
//前景顏色
button1.tintColor = [UIColor redColor];
//圓角 外邊框效果
    [Button1.layer setMasksToBounds:YES];
    [Button1.layer setCornerRadius:10.0]; //設置矩形四個圓角半徑
    [Button1.layer setBorderWidth:1.0]; //邊框寬度
    (若設置button爲圓形,則setCornerRadius的值爲button的半徑)
//第一種  邊框顏色
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGColorRef colorref = CGColorCreate(colorSpace,(CGFloat[]){ 1, 0, 0, 1 });
    [Button1.layer setBorderColor:colorref];//邊框顏色
//第二種
    Button1.layer.backgroundColor = (__bridge CGColorRef)([self colorFromHexRGB:TopSliderColor]);
//第三種
    Button1.layer.borderColor=[UIColor grayColor].CGColor;
//導入(QuartzCore.framework)

 

四、圖片

//設置button填充  
    UIImage* image = [UIImage imageNamed:@"btng.png"];
    [button setImage:image forState:UIControlStateNormal];
    //背景圖片
    [button setBackgroundImage:image forState:UIControlStateNormal];
    //拿到當前圖片
    image = button.currentImage;
    image = button.currentBackgroundImage;
    
//按鈕圖片大小
    //一、圖片命名@2x.png
    //二、[UIImage imageNamed:@"aa.png"] 圖片會根據按鈕的大小改變,而[UIImage imageWithContentsOfFile:imagePath] 真實顯示圖片大小
    NSString *imagePath = [[NSBundle mainBundle] pathForResource:@"search-B@2x" ofType:@"png"];

五、標題文字 大小、字體、狀態、對齊、顏色

//設置button 標籤文字   
    [button1 setTitle:@"點擊" forState:UIControlStateNormal];    
//取得title
    NSString* title = button.titleLabel.text;
    title = button.currentTitle;
//設置title顏色
    [button setTitleColor:[UIColor blueColor] forState:UIControlStateNormal];
    [button setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
//取得title的顏色
    UIColor* color = button.currentTitleColor;
//字體、大小
    button1.titleLabel.font = [UIFont fontWithName:@"Arial" size:18.0];
//文字陰影
	[button1 setTitleShadowColor:[UIColor greenColor] forState:UIControlStateNormal];
	[[button1 titleLabel] setShadowOffset:CGSizeMake(1, 1)];
//文字自適應
//計算UIlabel寬度,而後在設置UIButton寬度

/* forState: 這個參數的做用是定義按鈕的文字或圖片在何種狀態下才會顯現*/    
//如下是幾種狀態    
//    enum {    
//        UIControlStateNormal       = 0,         常規狀態顯現                 
//        UIControlStateHighlighted  = 1 << 0,    高亮狀態顯現       
//        UIControlStateDisabled     = 1 << 1,    禁用的狀態纔會顯現    
//        UIControlStateSelected     = 1 << 2,    選中狀態                 
//        UIControlStateApplication  = 0x00FF0000, 當應用程序標誌時               
//        UIControlStateReserved     = 0xFF000000  爲內部框架預留,能夠無論他                
//    };    
  
/*    
* 默認狀況下,當按鈕高亮的狀況下,圖像的顏色會被畫深一點,若是這下面的這個屬性設置爲no,    
* 那麼能夠去掉這個功能    
*/    
    button1.adjustsImageWhenHighlighted = NO;    
/*跟上面的狀況同樣,默認狀況下,當按鈕禁用的時候,圖像會被畫得深一點,設置NO能夠取消設置*/    
    button1.adjustsImageWhenDisabled = NO;    
/* 下面的這個屬性設置爲yes的狀態下,按鈕按下會發光*/    
    button1.showsTouchWhenHighlighted = YES;
//水平對齊
[button setContentHorizontalAlignment:UIControlContentHorizontalAlignmentLeft];
//垂直對齊方式
	[button1 setContentVerticalAlignment:UIControlContentVerticalAlignmentBottom];
//內部內容邊距
	[button1 setContentEdgeInsets:UIEdgeInsetsMake(0, 10, 0, 0)];
//文字內在距離
button.titleEdgeInsets = UIEdgeInsetsMake(0, 10, 0, 0);

六、事件相應

/* 
給button添加點擊事件,事件有不少種,我會單獨開一篇博文介紹它們,下面這個事件的意思是    
按下按鈕,而且手指離開屏幕的時候觸發這個事件,跟web中的click事件同樣。    
觸發了這個事件之後,執行butClick:這個方法,addTarget:self 的意思是說,這個方法在本類中    
也能夠傳入其餘類的指針
*/    
[button1 addTarget:self action:@selector(butClick:) forControlEvents:UIControlEventTouchUpInside];
//添加一個方法 來相應按鈕的點擊時間
- (void)buttonClick:(UIButton*)button{
    //父視圖經過tag值獲取子視圖的指針對象
    /*
     子視圖能夠設置一個tag值,而後添加到父視圖上,父視圖就能夠經過這個tag值拿到子視圖的指針。
     tag值也能夠保存一些用戶的信息。
     */
    UILabel* label = (UILabel*)[self.window viewWithTag:100];
    label.text = @"我被修改了";
}

七、顯示控件

//添加button到當前窗口的根視圖
[self.view addSubview:button1];

 

八、web

九、框架

問題解答ide

我設置的圖片爲何變成藍色 ?

//改button的type爲: UIButtonTypeCustom

 

實例1:仿 iPhone通話界面按鈕 

//dial_mute字體

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
    button.frame = CGRectMake(50, 100, 50, 50);
    [button setImage:[UIImage imageNamed:@"dial_mute"] forState:UIControlStateNormal];
    button.layer.borderColor = [UIColor whiteColor].CGColor;
    button.layer.borderWidth = 1.0;
    [button.layer setMasksToBounds:YES];
    [button.layer setCornerRadius:25.0];//爲button的半徑,就是寬或高的一半

 


實例二: 選擇框 checkbox

說明:根據UIControlState 、 selected 來切換圖片,記住是否選中狀態spa

UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];
button.frame = CGRectMake(150, 150, 20, 20);
[button addTarget:self action:@selector(buttonClick:) forControlEvents:UIControlEventTouchDown];
[button setImage:[UIImage imageNamed:@"checkbox_checkedunable"] forState:UIControlStateNormal];
[button setImage:[UIImage imageNamed:@"checkbox_checked"] forState:UIControlStateSelected];
[self.view addSubview:button];

- (void)buttonClick:(UIButton *)button{
if (button.selected) {
button.selected = NO;
}else{
button.selected = YES;
}
}

- (BOOL)isRemember{
return _button.selected;
}

 

https://github.com/antoniocasero/ACPButton
很好的開源封裝指針

 

實例三:button圖片的大小

- (UIImage*)transformWidth:(CGFloat)width
                    height:(CGFloat)height image:(NSString *)imageName {
    
    CGFloat destW = width;
    CGFloat destH = height;
    CGFloat sourceW = width;
    CGFloat sourceH = height;
    
    UIImage *image = [UIImage imageNamed:imageName];
    CGImageRef imageRef = image.CGImage;
    CGContextRef bitmap = CGBitmapContextCreate(NULL,
                                                destW,
                                                destH,
                                                CGImageGetBitsPerComponent(imageRef),
                                                4*destW,
                                                CGImageGetColorSpace(imageRef),
                                                (kCGBitmapByteOrder32Little | kCGImageAlphaPremultipliedFirst));
    
    CGContextDrawImage(bitmap, CGRectMake(0, 0, sourceW, sourceH), imageRef);
    
    CGImageRef ref = CGBitmapContextCreateImage(bitmap);
    UIImage *resultImage = [UIImage imageWithCGImage:ref];
    CGContextRelease(bitmap);
    CGImageRelease(ref);
    
    return resultImage;
}
相關文章
相關標籤/搜索