iOS 不同寬度的button自動(dòng)換行

思路:通過(guò)字符串算button的寬,for循環(huán),如果多個(gè)button的寬相加大于屏幕寬,就換行,Y+=.以此類推
核心代碼:

//通過(guò)字符串求寬或高,這里求的是寬,一搬咱們都是求高,總之.相求A就把A寫(xiě)成0或者M(jìn)AXFLOAT,另外一個(gè)寫(xiě)具體的數(shù).
 //titleFont,他是字體,字號(hào)一定要和view上的字號(hào)一樣,否則不準(zhǔn)
//options:有四個(gè)選項(xiàng):字符串的換行形式,有四個(gè),根據(jù)情況來(lái)一搬是這倆
NSStringDrawingUsesLineFragmentOrigin |NSStringDrawingUsesFontLeading
CGRect rect = [str boundingRectWithSize:CGSizeMake(MAXFLOAT, 25) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : titleFont} context:nil];
我這里自定義了一個(gè)view
- (void)setTitleAry:(NSArray *)titleAry//存放字符串的數(shù)組
{
    CGFloat pointX = 10.0;
    CGFloat pointY = 10.0;
    CGFloat allWidth = self.frame.size.width - 20;
    UIFont *titleFont = [UIFont systemFontOfSize:15];
    for (int i = 0; i < titleAry.count; i++) {
        CGRect rect = [titleAry[i] boundingRectWithSize:CGSizeMake(MAXFLOAT, 25) options:NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : titleFont} context:nil];
        CGFloat  width = rect.size.width + 30;
        
        if (pointX + width > allWidth) {//換行
            pointX = 10;//X從新開(kāi)始
            pointY += 30;//換行后Y+
        }
        UIButton *but = [UIButton buttonWithType:UIButtonTypeCustom];
        but.frame = CGRectMake(pointX, pointY, width, 25);
//        UIButton *but = [[UIButton alloc] initWithFrame:CGRectMake(pointX, pointY, width, 25)];
        but.tag = i + 1000;
        [but addTarget:self action:@selector(butAction:) forControlEvents:UIControlEventTouchUpInside];
        but.layer.masksToBounds = YES;
        but.layer.cornerRadius = 10;
        [but setBackgroundImage:[UIImage imageWithColor:kHN_BackColor] forState:UIControlStateNormal];
        [but setTitleColor:[UIColor blackColor ] forState:UIControlStateNormal];   
        [but setTitle:titleAry[i] forState:UIControlStateNormal];
        but.titleLabel.font = titleFont;//一定要一樣
        pointX += (width + 5);//每次X都加上button寬和間距5
    
        [self addSubview:but];
    }
    CGRect rect2 = self.frame;
    rect2.size.height = pointY + 35;
    self.frame = rect2;
}

本代碼參考了http://www.reibang.com/p/9a6aacde3f00,感謝

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末瞻颂,一起剝皮案震驚了整個(gè)濱河市储藐,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌,老刑警劉巖票堵,帶你破解...
    沈念sama閱讀 212,884評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件抛姑,死亡現(xiàn)場(chǎng)離奇詭異趁矾,居然都是意外死亡瓮具,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,755評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)掌呜,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)滓玖,“玉大人,你說(shuō)我怎么就攤上這事质蕉∈拼郏” “怎么了翩肌?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,369評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)禁悠。 經(jīng)常有香客問(wèn)我念祭,道長(zhǎng),這世上最難降的妖魔是什么碍侦? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,799評(píng)論 1 285
  • 正文 為了忘掉前任粱坤,我火速辦了婚禮,結(jié)果婚禮上瓷产,老公的妹妹穿的比我還像新娘站玄。我一直安慰自己,他們只是感情好濒旦,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,910評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布株旷。 她就那樣靜靜地躺著,像睡著了一般尔邓。 火紅的嫁衣襯著肌膚如雪灾常。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 50,096評(píng)論 1 291
  • 那天铃拇,我揣著相機(jī)與錄音,去河邊找鬼沈撞。 笑死慷荔,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的缠俺。 我是一名探鬼主播显晶,決...
    沈念sama閱讀 39,159評(píng)論 3 411
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼壹士!你這毒婦竟也來(lái)了磷雇?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,917評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤躏救,失蹤者是張志新(化名)和其女友劉穎唯笙,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體盒使,經(jīng)...
    沈念sama閱讀 44,360評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡崩掘,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,673評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了少办。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片苞慢。...
    茶點(diǎn)故事閱讀 38,814評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖英妓,靈堂內(nèi)的尸體忽然破棺而出挽放,到底是詐尸還是另有隱情绍赛,我是刑警寧澤,帶...
    沈念sama閱讀 34,509評(píng)論 4 334
  • 正文 年R本政府宣布辑畦,位于F島的核電站吗蚌,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏航闺。R本人自食惡果不足惜褪测,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,156評(píng)論 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望潦刃。 院中可真熱鬧侮措,春花似錦、人聲如沸乖杠。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,882評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)胧洒。三九已至畏吓,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間卫漫,已是汗流浹背菲饼。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,123評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留列赎,地道東北人宏悦。 一個(gè)月前我還...
    沈念sama閱讀 46,641評(píng)論 2 362
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像包吝,于是被迫代替她去往敵國(guó)和親饼煞。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,728評(píng)論 2 351

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

  • ¥開(kāi)啟¥ 【iAPP實(shí)現(xiàn)進(jìn)入界面執(zhí)行逐一顯】 〖2017-08-25 15:22:14〗 《//首先開(kāi)一個(gè)線程诗越,因...
    小菜c閱讀 6,377評(píng)論 0 17
  • Android 自定義View的各種姿勢(shì)1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 171,872評(píng)論 25 707
  • 今天看了某牛人分享砖瞧,貌似透露出“設(shè)計(jì)端拿走了價(jià)值鏈大部分,制造端即使再改革也沒(méi)有那么值錢(qián)”的觀點(diǎn)嚷狞。 這個(gè)理論叫微笑...
    火火兔閱讀 470評(píng)論 0 51
  • 視頻內(nèi)容大致分為三種類型(文本似乎也類似块促,有待驗(yàn)證) 1. 大眾娛樂(lè)型 東家長(zhǎng)西家短,看熱鬧不嫌事兒大的感耙,比如社會(huì)...
    康小胖閱讀 3,445評(píng)論 0 0
  • 最近心情挺糾結(jié)的褂乍,一方面老公過(guò)來(lái)陪我,在外面租了個(gè)短期房即硼,就是為了我晚上下班一個(gè)人不會(huì)怕(雖然我本來(lái)就不怕)逃片,這是...
    一顆有趣的豆閱讀 125評(píng)論 0 0