gitHub地址:github.com/wangtongke/AutoFitLabel.git
如果是下面這種的
則比較容易實現。一種是通過動態(tài)計算label的寬度症革,九宮格創(chuàng)建鸯旁。另外一種就是使用collectionView,重寫layout來實現艇挨,也就是一個橫向的瀑布流布局。推薦使用MSSAutoresizeLabelFlow吉殃,已經封裝好楷怒,創(chuàng)建時傳一個數組即可鸠删,點擊事件則通過block傳遞贼陶。創(chuàng)建方式如下
另外一種如下圖
這種就比較蛋疼了碉怔,橫向瀑布流用不了了。只能自己用九宮格寫桨踪。下面說一下要點及思路锻离。
1墓怀、每行的字數、label個數都是不固定的虱朵,但是間距都是一定的钓账,并且距離邊界都是一樣的。
2翅敌、每一個級別的高度也是不固定的惕蹄,
3、上面點擊之后遭顶,下級會改變棒旗,所以還要考慮重用。
下面主要說一下九宮格創(chuàng)建饶深」涔埃考慮到每行不能超過多少個字,或者不能多于幾個按鈕(這里設置的是18個字俱两,6個按鈕)曹步,并且每行最少兩個讲婚。所以使用了雙重循環(huán),第一層循環(huán)為遍歷整個數組纳猫,內嵌兩個循環(huán)竹捉,一個循環(huán)為while循環(huán)判斷每行不能超過18個字或者6個按鈕。另外一個循環(huán)創(chuàng)建btn侵续。 ?
如下:
內部while循環(huán)
超過18個字或者大于6個就跳出循環(huán)状蜗,btnNum為本次循環(huán)所要創(chuàng)建的btn個數轧坎。
結束本次外部循環(huán)后泽示,使i= j,然后再開始下一行的循環(huán)捎泻。
gitHub地址GitHub - wangtongke/AutoFitLabel: 自適應label布局笆豁,類似于歷史搜索列表
github上面只有下面這兩種布局。沒有多級聯動類的布局煞赢。
另外按鈕寬度根據文字計算哄孤,這個不在多說