UIButton內(nèi)的文字和圖片

經(jīng)常會遇到button中同時存在文字和圖片的情況,UI還會標(biāo)注間距,調(diào)來調(diào)去的超級抓狂,所以從各種大大們分享的博客扒些資料,自己總結(jié)一下,方便理解.

對齊方式

首先是.contentHorizontalAlignment屬性,之前很少接觸,每次都是根據(jù)字體大小算button的frame,設(shè)置跟其他控件的間距,但是這樣就會出現(xiàn)button的點擊區(qū)域太小的問題. 通過設(shè)置contentHorizontalAlignment是讓button內(nèi)的titleLabel或者ImageView緊貼邊框:

 UIButton * button = [UIButton buttonWithType:(UIButtonTypeCustom)];
    [button setTitle:@"十指戀jing" forState:(UIControlStateNormal)];
    button.titleLabel.backgroundColor = [UIColor yellowColor];
    button.titleLabel.textAlignment = NSTextAlignmentRight; // 文字在titleLabel中右對齊(并沒有看出有什么卵用)
    [button setTitleColor:[UIColor blackColor] forState:(UIControlStateNormal)];
    button.frame = CGRectMake(50, 300, 300, 40);
    button.layer.borderColor = [UIColor blackColor].CGColor;
    button.layer.borderWidth = 1;
    [self.view addSubview:button];

效果如下:


EDB4F197-FAD3-48EC-AEFA-5E1262CF7EAD.png
// 設(shè)置button的內(nèi)容位置。嘉熊。設(shè)置content是title和image一起變化
// 讓titleLabel 緊貼button右邊框
    [button setContentHorizontalAlignment:(UIControlContentHorizontalAlignmentRight)];
    /*
     UIControlContentHorizontalAlignmentCenter 居中
     UIControlContentHorizontalAlignmentLeft   居左
     UIControlContentHorizontalAlignmentRight  居右
     UIControlContentHorizontalAlignmentFill   充滿(但是實際看了下效果跟居左一樣,沒懂啥情況,歡迎大神解讀)
     */
08142641-1841-471A-9F80-D35C3A0EB619.png

圖片和文字共存

這里設(shè)置間距用到contentEdgeInsets屬性,設(shè)置邊界值 UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right) // 上,左,下,右
contentEdgeInsets屬性改變的為當(dāng)前位置,是針對它當(dāng)前的位置起作用的牧抵,并不是針對它距離button邊框的距離的,舉個栗子:在上面的代碼中已設(shè)置titleLabel居右,此時設(shè)置 [button setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 0 )];并無任何變化,應(yīng)為所有距當(dāng)前的位置的偏移量都為0;

[button setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 10 )];// 此時titleLabel距button的右邊距為10

如果只有title仗嗦,那它上下左右都是相對于button的,image也是一樣涛菠;如果同時有image和label,那這時候image的上左下是相對于button,右邊是相對于label的铁材;title的上右下是相對于button,左邊是相對于image的,所以一般情況下button內(nèi)的titleLAbel在右,imageView在左;

    [button setTitle:@"十指戀jing" forState:(UIControlStateNormal)];
    [button setImage:[UIImage imageNamed:@"info"] forState:(UIControlStateNormal)];
    [button setContentHorizontalAlignment:(UIControlContentHorizontalAlignmentRight)];
    [button setTitleEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 20 )]; // 文字距離右邊距20
    [button setImageEdgeInsets:UIEdgeInsetsMake(0, 0, 0, 50)]; // 圖片距離文字50

5C8ED714-660B-49E4-A5B8-EC4A13771EC2.png

圖片在右 文字在左的情況

[button setTitleEdgeInsets:UIEdgeInsetsMake(0, - button.imageView.frame.size.width - 20, 0, button.imageView.frame.size.width + 20)];
    [button setImageEdgeInsets:UIEdgeInsetsMake(0, button.titleLabel.bounds.size.width, 0, -button.titleLabel.bounds.size.width)];
/*
設(shè)置右邊距增加圖片寬度奕锌,就使得自己的右邊界距離按鈕的右邊界多了圖片的寬度著觉,正好放下圖片。
此時惊暴,title lable變小了饼丘,而title lable的左邊界還在原來的位置上,
所以lable的左邊界距離按鈕的左邊界減少圖片的寬度辽话,
lable就和原來一樣大了肄鸽,而且左側(cè)起始位置和圖片的左側(cè)起始位置相同了。
*/
945CF916-865B-48FE-BBB2-4A660437B9D6.png

圖片與文字上下放置時與左右類似
設(shè)置 contentVerticalAlignment改變UIEdgeInsetsMake(CGFloat top, CGFloat left, CGFloat bottom, CGFloat right)的top 和 bottom即可

下面是關(guān)于UIButton中titleLabel與imageView的顯示原則

1.當(dāng)button.width < image.width時油啤,只顯示被壓縮后的圖片典徘,圖片是按fillXY的方式壓縮。

2.當(dāng)button.width > image.width益咬,且 button.width < (image.width + text.width)時逮诲,圖片正常顯示,文本被壓縮。

3.當(dāng)button.width > (image.width + text.width),兩者并列默認(rèn)居中顯示梅鹦,可通過button的屬性contentHorizontalAlignment改變對齊方式裆甩。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市齐唆,隨后出現(xiàn)的幾起案子嗤栓,更是在濱河造成了極大的恐慌,老刑警劉巖箍邮,帶你破解...
    沈念sama閱讀 219,589評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件茉帅,死亡現(xiàn)場離奇詭異,居然都是意外死亡媒殉,警方通過查閱死者的電腦和手機担敌,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,615評論 3 396
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來廷蓉,“玉大人全封,你說我怎么就攤上這事√胰” “怎么了刹悴?”我有些...
    開封第一講書人閱讀 165,933評論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長攒暇。 經(jīng)常有香客問我土匀,道長,這世上最難降的妖魔是什么形用? 我笑而不...
    開封第一講書人閱讀 58,976評論 1 295
  • 正文 為了忘掉前任就轧,我火速辦了婚禮,結(jié)果婚禮上田度,老公的妹妹穿的比我還像新娘妒御。我一直安慰自己,他們只是感情好镇饺,可當(dāng)我...
    茶點故事閱讀 67,999評論 6 393
  • 文/花漫 我一把揭開白布乎莉。 她就那樣靜靜地躺著,像睡著了一般奸笤。 火紅的嫁衣襯著肌膚如雪惋啃。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,775評論 1 307
  • 那天监右,我揣著相機與錄音边灭,去河邊找鬼。 笑死健盒,一個胖子當(dāng)著我的面吹牛绒瘦,可吹牛的內(nèi)容都是我干的宠互。 我是一名探鬼主播,決...
    沈念sama閱讀 40,474評論 3 420
  • 文/蒼蘭香墨 我猛地睜開眼椭坚,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了搏色?” 一聲冷哼從身側(cè)響起善茎,我...
    開封第一講書人閱讀 39,359評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎频轿,沒想到半個月后垂涯,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,854評論 1 317
  • 正文 獨居荒郊野嶺守林人離奇死亡航邢,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,007評論 3 338
  • 正文 我和宋清朗相戀三年耕赘,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片膳殷。...
    茶點故事閱讀 40,146評論 1 351
  • 序言:一個原本活蹦亂跳的男人離奇死亡操骡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出赚窃,到底是詐尸還是另有隱情册招,我是刑警寧澤,帶...
    沈念sama閱讀 35,826評論 5 346
  • 正文 年R本政府宣布勒极,位于F島的核電站是掰,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏辱匿。R本人自食惡果不足惜键痛,卻給世界環(huán)境...
    茶點故事閱讀 41,484評論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望匾七。 院中可真熱鬧絮短,春花似錦、人聲如沸乐尊。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,029評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽扔嵌。三九已至限府,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間痢缎,已是汗流浹背胁勺。 一陣腳步聲響...
    開封第一講書人閱讀 33,153評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留独旷,地道東北人署穗。 一個月前我還...
    沈念sama閱讀 48,420評論 3 373
  • 正文 我出身青樓续搀,卻偏偏與公主長得像,于是被迫代替她去往敵國和親惫霸。 傳聞我的和親對象是個殘疾皇子矮烹,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,107評論 2 356

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