UIButton的titleEdgeInsets屬性和imageEdgeInsets屬性實現(xiàn)圖片文字排列

UIButton內(nèi)有兩個控件titleLabel和imageView料按,可以用來顯示一個文本和圖片肛冶,這里的圖片區(qū)別于背景圖片晴楔。給UIButton設(shè)置了title和image后厘贼,它們會圖片在左邊诚卸,文本在圖片右邊顯示葵第。它們兩個做為一個整體依賴于button的
contentHorizontalAlignment居左居右或居中顯示。(默認是居中)

當(dāng)button.width < image.width時合溺,只顯示被壓縮后的圖片卒密,圖片是按fillXY的方式壓縮。
 
當(dāng)button.width > image.width辫愉,且 button.width < (image.width + text.width)時栅受,圖片正常顯示,文本被壓縮。
 
當(dāng)button.width > (image.width + text.width),兩者并列默認居中顯示屏镊,可通過button的屬性contentHorizontalAlignment改變對齊方式依疼。
 
想兩改變兩個子控件的顯示位置,可以分別通過setTitleEdgeInsets和setImageEdgeInsets來實現(xiàn)而芥。 需要注意的是律罢,對titleLabel和imageView設(shè)置偏移,是針對它當(dāng)前的位置起作用的棍丐,并不是針對它距離button邊框的距離的误辑。
首先,給大家推薦一個第三方歌逢,因為UI的東西其實都是比較簡單的巾钉,大家工作的用用到的時候,知道有這么個東西就行了秘案。https://github.com/search?utf8=%E2%9C%93&q=CenterImageAndTitle

導(dǎo)入到工程砰苍,就只有兩個文件

屏幕快照 2016-12-20 下午1.31.54.png

直接上代碼,看看怎么用的吧阱高。

@interface TestMasonryViewController ()
@property (nonatomic, strong) UIButton *btn;
@property (nonatomic, strong) UILabel *lab;
@property (nonatomic, strong) UIView *viewFunction;
@property (nonatomic, strong) UIButton *btn1;
@property (nonatomic, strong) UIButton *btn2;
@property (nonatomic, strong) UIButton *btn3;
@property (nonatomic, strong) UIButton *btn4;
@property (nonatomic, strong) UIButton *btn5;
@property (nonatomic, strong) UIButton *btn6;
@property (nonatomic, strong) UIButton *btn7;
@end

@implementation TestMasonryViewController

- (void)viewDidLoad {
    [super viewDidLoad];
       // 樣式一:圖片在上赚导,文字在下, 整體居中
    self.viewFunction = [[UIView alloc] init];
    [self.view addSubview:self.viewFunction];
    self.viewFunction.backgroundColor = HEXCOLOR(0xffffff);
    
    [self.viewFunction mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.right.mas_equalTo(0);
        make.top.mas_equalTo(100);
        make.height.mas_equalTo(80);
    }];
    
    self.btn1 = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.btn1 setImage:[UIImage imageNamed:@"法國"] forState:UIControlStateNormal];
    [self.btn1 setTitle:@"電影票" forState:UIControlStateNormal];
    [self.btn1 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [self.viewFunction addSubview:self.btn1];
    
    self.btn2 = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.btn2 setImage:[UIImage imageNamed:@"法國"] forState:UIControlStateNormal];
    [self.btn2 setTitle:@"演出票" forState:UIControlStateNormal];
    [self.btn2 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [self.viewFunction addSubview:self.btn2];

    self.btn3 = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.btn3 setImage:[UIImage imageNamed:@"法國"] forState:UIControlStateNormal];
    [self.btn3 setTitle:@"優(yōu)惠券" forState:UIControlStateNormal];
    [self.btn3 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [self.btn3 verticalCenterImageAndTitle:10];
    [self.viewFunction addSubview:self.btn3];
    
    self.btn4 = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.btn4 setImage:[UIImage imageNamed:@"法國"] forState:UIControlStateNormal];
    [self.btn4 setTitle:@"影城卡" forState:UIControlStateNormal];
    [self.btn4 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [self.btn4 verticalCenterImageAndTitle:10];
    [self.viewFunction addSubview:self.btn4];

    [self.btn1 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(0);
        make.top.mas_equalTo(0);
        make.width.mas_equalTo(Screen_Width / 4);
        make.height.mas_equalTo(self.viewFunction.mas_height);
    }];
    
    [self.btn2 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(self.btn1.mas_right);
        make.top.mas_equalTo(0);
        make.width.mas_equalTo(self.btn1.mas_width);
        make.height.mas_equalTo(self.viewFunction.mas_height);
    }];

    [self.btn3 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(self.btn2.mas_right);
        make.top.mas_equalTo(0);
        make.width.mas_equalTo(self.btn1.mas_width);
        make.height.mas_equalTo(self.viewFunction.mas_height);
    }];
    
    [self.btn4 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(self.btn3.mas_right);
        make.top.mas_equalTo(0);
        make.width.mas_equalTo(self.btn1.mas_width);
        make.height.mas_equalTo(self.viewFunction.mas_height);
    }];

    // 注意一定要在 btn 設(shè)置完frame 之后再設(shè)置赤惊。 否者會出問題
    [self.btn1 verticalCenterImageAndTitle:10];
    [self.btn2 verticalCenterImageAndTitle:10];
    [self.btn3 verticalCenterImageAndTitle:10];
    [self.btn4 verticalCenterImageAndTitle:10];
    self.btn1.backgroundColor = RandColor;
    self.btn2.backgroundColor = RandColor;
    self.btn3.backgroundColor = RandColor;
    self.btn4.backgroundColor = RandColor;
    


    // 樣式2 : 圖片在左吼旧,文字在右
    self.btn5 = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.btn5 setImage:[UIImage imageNamed:@"法國"] forState:UIControlStateNormal];
    [self.btn5 setTitle:@"影城卡煩到死案發(fā)后愛的色放" forState:UIControlStateNormal];
    [self.btn5 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [self.view addSubview:self.btn5];
    [self.btn5 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(10);
        make.top.mas_equalTo(self.viewFunction.mas_bottom).offset(10);
    }];
    
    self.btn6 = [UIButton buttonWithType:UIButtonTypeCustom];
    [self.btn6 setImage:[UIImage imageNamed:@"法國"] forState:UIControlStateNormal];
    [self.btn6 setTitle:@"影城卡煩" forState:UIControlStateNormal];
    [self.btn6 setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
    [self.view addSubview:self.btn6];
    [self.btn6 mas_makeConstraints:^(MASConstraintMaker *make) {
        make.left.mas_equalTo(10);
        make.top.mas_equalTo(self.btn5.mas_bottom).offset(10);
    }];

    [self.btn5 horizontalCenterImageAndTitle:10];
    [self.btn6 horizontalCenterImageAndTitle:10];
    
    // 子這里布局是為了得到self.btn5 的 frame
    [self.view layoutIfNeeded];
    // 為什么這里我又重新進行了更新約束,因為設(shè)置玩圖片和文字的間距之后未舟,如果不重新布局圈暗,圖片或者文字會超出按鈕的范圍〈γ妫看一下錯誤的效果圖吧厂置。但是我感覺這個地方大家不是特別的會注意到。
    [self.btn5 mas_updateConstraints:^(MASConstraintMaker *make) {
        make.width.mas_equalTo(self.btn5.frame.size.width + 10);
    }];
    [self.btn6 mas_updateConstraints:^(MASConstraintMaker *make) {
        make.width.mas_equalTo(self.btn6.frame.size.width + 10);
    }];

    
    self.btn5.backgroundColor = RandColor;
    self.btn6.backgroundColor = RandColor;

}

錯誤的圖片魂角,大家看一下:


Simulator Screen Shot 2016年12月20日 下午1.41.32.png

附上正確的效果圖:


Simulator Screen Shot 2016年12月20日 下午1.35.21.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末昵济,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子野揪,更是在濱河造成了極大的恐慌访忿,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件斯稳,死亡現(xiàn)場離奇詭異海铆,居然都是意外死亡,警方通過查閱死者的電腦和手機挣惰,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門卧斟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殴边,“玉大人,你說我怎么就攤上這事珍语〈赴叮” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵板乙,是天一觀的道長是偷。 經(jīng)常有香客問我,道長募逞,這世上最難降的妖魔是什么蛋铆? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮放接,結(jié)果婚禮上刺啦,老公的妹妹穿的比我還像新娘。我一直安慰自己透乾,他們只是感情好洪燥,可當(dāng)我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著乳乌,像睡著了一般。 火紅的嫁衣襯著肌膚如雪市咆。 梳的紋絲不亂的頭發(fā)上汉操,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天,我揣著相機與錄音蒙兰,去河邊找鬼磷瘤。 笑死,一個胖子當(dāng)著我的面吹牛搜变,可吹牛的內(nèi)容都是我干的采缚。 我是一名探鬼主播,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼挠他,長吁一口氣:“原來是場噩夢啊……” “哼扳抽!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起殖侵,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤贸呢,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后拢军,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體楞陷,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年茉唉,在試婚紗的時候發(fā)現(xiàn)自己被綠了固蛾。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片结执。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖艾凯,靈堂內(nèi)的尸體忽然破棺而出昌犹,到底是詐尸還是另有隱情,我是刑警寧澤览芳,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布斜姥,位于F島的核電站,受9級特大地震影響沧竟,放射性物質(zhì)發(fā)生泄漏铸敏。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一悟泵、第九天 我趴在偏房一處隱蔽的房頂上張望杈笔。 院中可真熱鬧,春花似錦糕非、人聲如沸蒙具。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽禁筏。三九已至,卻和暖如春衡招,著一層夾襖步出監(jiān)牢的瞬間篱昔,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工始腾, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留州刽,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓浪箭,卻偏偏與公主長得像穗椅,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子奶栖,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容