Button上icon加文字

我們常常需要做一個(gè)button上面既有icon又有文字觅捆。也許左icon右文字先舷,或者上icon下文字活孩。UIButton并沒(méi)有提供直接這樣排布的功能,大家可能也能用

  • 添加一個(gè)UIButton的 category
    .h文件

    - (void)titleImageHorizontalAlignmentWithSpace:(float)space;
    - (void)imageTitleHorizontalAlignmentWithSpace:(float)space;
    - (void)titleImageVerticalAlignmentWithSpace:(float)space;
    - (void)imageTitleVerticalAlignmentWithSpace:(float)space;
    
  • .m 文件

    - (void)titleImageHorizontalAlignmentWithSpace:(float)space;
    {
      [self resetEdgeInsets];
      [self setNeedsLayout];
      [self layoutIfNeeded];
    
      CGRect contentRect = [self contentRectForBounds:self.bounds];
      CGSize titleSize = [self titleRectForContentRect:contentRect].size;
      CGSize imageSize = [self imageRectForContentRect:contentRect].size;
    
      [self setContentEdgeInsets:UIEdgeInsetsMake(0, 0, 0, space)];
      [self setTitleEdgeInsets:UIEdgeInsetsMake(0, -imageSize.width, 0, imageSize.width)];
      [self setImageEdgeInsets:UIEdgeInsetsMake(0, titleSize.width+space, 0, -titleSize.width - space)];
    }
    
    - (void)imageTitleHorizontalAlignmentWithSpace:(float)space;
    {
      [self resetEdgeInsets];
      [self setTitleEdgeInsets:UIEdgeInsetsMake(0, space, 0, -space)];
      [self setContentEdgeInsets:UIEdgeInsetsMake(0, 0, 0, space)];
    }
    
    - (void)titleImageVerticalAlignmentWithSpace:(float)space;
    {
      [self verticalAlignmentWithTitleTop:YES space:space];
    }
    
    - (void)imageTitleVerticalAlignmentWithSpace:(float)space;
    {
        [self verticalAlignmentWithTitleTop:NO space:space];
    }
    
    - (void)verticalAlignmentWithTitleTop:(BOOL)isTop space:(float)space ;
    {
        [self resetEdgeInsets];
        [self setNeedsLayout];
        [self layoutIfNeeded];
    
        CGRect contentRect = [self contentRectForBounds:self.bounds];
        CGSize titleSize = [self titleRectForContentRect:contentRect].size;
        CGSize imageSize = [self imageRectForContentRect:contentRect].size;
    
        float halfWidth = (titleSize.width + imageSize.width)/2;
        float halfHeight = (titleSize.height + imageSize.height)/2;
    
        float topInset = MIN(halfHeight, titleSize.height);
        float leftInset = (titleSize.width - imageSize.width)>0?(titleSize.width - imageSize.width)/2:0;
        float bottomInset = (titleSize.height - imageSize.height)>0?(titleSize.height - imageSize.height)/2:0;
        float rightInset = MIN(halfWidth, titleSize.width);
    
        if (isTop) {
          [self setTitleEdgeInsets:UIEdgeInsetsMake(-titleSize.height-space, - halfWidth, imageSize.height+space, halfWidth)];
          [self setContentEdgeInsets:UIEdgeInsetsMake(topInset+space, leftInset, -bottomInset, -rightInset)];
      } else {
      [self setTitleEdgeInsets:UIEdgeInsetsMake(imageSize.height+space, - halfWidth, -titleSize.height-space, halfWidth)];
      [self setContentEdgeInsets:UIEdgeInsetsMake(-bottomInset, leftInset, topInset+space, -rightInset)];
      }
    }
    
    - (void)resetEdgeInsets
    {
      [self setContentEdgeInsets:UIEdgeInsetsZero];
      [self setImageEdgeInsets:UIEdgeInsetsZero];
      [self setTitleEdgeInsets:UIEdgeInsetsZero];
    }    
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末俩功,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子碰声,更是在濱河造成了極大的恐慌诡蜓,老刑警劉巖,帶你破解...
    沈念sama閱讀 222,104評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件胰挑,死亡現(xiàn)場(chǎng)離奇詭異蔓罚,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)瞻颂,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,816評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén)脚粟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人蘸朋,你說(shuō)我怎么就攤上這事核无。” “怎么了藕坯?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,697評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵团南,是天一觀的道長(zhǎng)噪沙。 經(jīng)常有香客問(wèn)我,道長(zhǎng)吐根,這世上最難降的妖魔是什么正歼? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,836評(píng)論 1 298
  • 正文 為了忘掉前任,我火速辦了婚禮拷橘,結(jié)果婚禮上局义,老公的妹妹穿的比我還像新娘。我一直安慰自己冗疮,他們只是感情好萄唇,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,851評(píng)論 6 397
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著术幔,像睡著了一般另萤。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上诅挑,一...
    開(kāi)封第一講書(shū)人閱讀 52,441評(píng)論 1 310
  • 那天四敞,我揣著相機(jī)與錄音,去河邊找鬼拔妥。 笑死忿危,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的没龙。 我是一名探鬼主播癌蚁,決...
    沈念sama閱讀 40,992評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼兜畸!你這毒婦竟也來(lái)了努释?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,899評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤咬摇,失蹤者是張志新(化名)和其女友劉穎伐蒂,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體肛鹏,經(jīng)...
    沈念sama閱讀 46,457評(píng)論 1 318
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡逸邦,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,529評(píng)論 3 341
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了在扰。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片缕减。...
    茶點(diǎn)故事閱讀 40,664評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖芒珠,靈堂內(nèi)的尸體忽然破棺而出桥狡,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 36,346評(píng)論 5 350
  • 正文 年R本政府宣布裹芝,位于F島的核電站部逮,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏嫂易。R本人自食惡果不足惜兄朋,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,025評(píng)論 3 334
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望怜械。 院中可真熱鬧颅和,春花似錦、人聲如沸缕允。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,511評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)灼芭。三九已至有额,卻和暖如春般又,著一層夾襖步出監(jiān)牢的瞬間彼绷,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,611評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工茴迁, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留寄悯,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,081評(píng)論 3 377
  • 正文 我出身青樓堕义,卻偏偏與公主長(zhǎng)得像猜旬,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子倦卖,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,675評(píng)論 2 359

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