iOS類似于搜索歷史記錄布局的兩種實現方式

gitHub地址:github.com/wangtongke/AutoFitLabel.git

如果是下面這種的

則比較容易實現。一種是通過動態計算label的寬度,九宮格創建。另外一種就是使用collectionView,重寫layout來實現,也就是一個橫向的瀑布流布局。推薦使用MSSAutoresizeLabelFlow,已經封裝好,創建時傳一個數組即可,點擊事件則通過block傳遞。創建方式如下

另外一種如下圖

這種就比較蛋疼了,橫向瀑布流用不了了。只能自己用九宮格寫。下面說一下要點及思路。

1、每行的字數、label個數都是不固定的,但是間距都是一定的,并且距離邊界都是一樣的。

2、每一個級別的高度也是不固定的,

3、上面點擊之后,下級會改變,所以還要考慮重用。

下面主要說一下九宮格創建。考慮到每行不能超過多少個字,或者不能多于幾個按鈕(這里設置的是18個字,6個按鈕),并且每行最少兩個。所以使用了雙重循環,第一層循環為遍歷整個數組,內嵌兩個循環,一個循環為while循環判斷每行不能超過18個字或者6個按鈕。另外一個循環創建btn。 ?

如下:

內部while循環

超過18個字或者大于6個就跳出循環,btnNum為本次循環所要創建的btn個數。


結束本次外部循環后,使i= j,然后再開始下一行的循環。

gitHub地址GitHub - wangtongke/AutoFitLabel: 自適應label布局,類似于歷史搜索列表

github上面只有下面這兩種布局。沒有多級聯動類的布局。


另外按鈕寬度根據文字計算,這個不在多說

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容