iOS開發——UI基礎-按鈕內邊距,圖片拉伸


一、內邊距

UIButton有三個屬性,分別可以設置按鈕以及內部子控件的內邊距

1、contentEdgeInsets

  如果是設置contentEdgeInsets, 會把UIImageView和UIlabel當做一個整體移動

btn.contentEdgeInsets = UIEdgeInsetsMake(30, 0, 0, 0);

對應狀態:

 

2、titleEdgeInsets/imageEdgeInsets

  如果是設置titleEdgeInsets/imageEdgeInsets. 那么不會影響到另外一個, 也就是只會改變當前設置的這個控件

    btn.titleEdgeInsets = UIEdgeInsetsMake(0, 30, 0, 0);

    btn.imageEdgeInsets = UIEdgeInsetsMake(30 ,0 , 0, 0);

 

 

二、圖片拉伸

1.iOS5以前

UIButton *btn = [[UIButton alloc] init];

    UIImage *image = [UIImage imageNamed:@"common_button_blue_highlighted"];



    // LeftCapWidth: 左邊多少不能拉伸

    // 右邊多少不能拉伸 = 控件的寬度 - 左邊多少不能拉伸 - 1

    //  right  =  width - leftCapWidth - 1

    // 1 = width - leftCapWidth - right

 

    // topCapHeight: 頂部多少不能拉伸

    // 底部有多少不能拉伸 = 控件的高度 - 頂部多少不能拉伸 - 1

    //  bottom =  height - topCapWidth - 1

    // 1 = height - topCapWidth - bottom

    UIImage *newImage = [image stretchableImageWithLeftCapWidth:5 topCapHeight:5];

2.iOS5開始

    // UIEdgeInsets是告訴系統哪些地方需要受保護, 也就是不可以拉伸

    // resizableImageWithCapInsets默認拉伸方式是平鋪

    UIEdgeInsets insets = UIEdgeInsetsMake(image.size.height * 0.5, image.size.width * 0.5, image.size.height * 0.5, image.size.width * 0.5);

    UIImage *newImage =  [image resizableImageWithCapInsets:insets];

3.iOS6開始

  // resizingMode指定拉伸模式

    // 平鋪

    // 拉伸

    UIEdgeInsets insets = UIEdgeInsetsMake(5, 5, 5, 5);

    UIImage *newImage =  [image resizableImageWithCapInsets:insets resizingMode:UIImageResizingModeStretch];

 

    [btn setBackgroundImage:newImage forState:UIControlStateNormal];

    btn.frame = CGRectMake(100, 100, 200, 80);

    [self.view addSubview:btn];

 


免責聲明!

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



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