iOS搜索熱詞實(shí)現(xiàn)

iOS搜索熱詞實(shí)現(xiàn)github鏈接

例圖

需求中需要實(shí)現(xiàn)搜索頁面展示搜索熱詞。
遇到的主要問題是:詞匯如何進(jìn)行換行,以及自身高度的適應(yīng)。

///button 文字兩邊空隙 
CGFloat const btnEnhanceW = 24;
///button 左右之間間距
CGFloat const btnMargin = 15;
///button 上下間距
CGFloat const btnMarginTB = 10;
///button 高度
CGFloat const btnH = 22; `

遍歷數(shù)據(jù)源添加button
通過計算行寬與容器寬度進(jìn)行比較,來確定需不需要換行

CGFloat btnW = button.bounds.size.width + btnEnhanceW + btnMargin;
  tempSum += btnW;
 if (tempSum < self.bounds.size.width + btnMargin ) {
    [btnsArr addObject:button];
 }else{
    tempSum = btnW;
    btnsArr = [NSMutableArray array];
    [btnsArr addObject:button];
    [_rowsContainer addObject:btnsArr];
 }

button初始化完成后,開始布局。

 CGFloat btnY = 0;
 for (int index = 0;index < self.rowsContainer.count; index++) {
     NSArray<UIButton *> *btnsArr = self.rowsContainer[index];
     if (index == 0) {
         btnY = 15;
     }else {
         btnY = 15 + (btnH + btnMarginTB) * index;
     }
     for (int i = 0; i < btnsArr.count; i++) {
         UIButton *button = (UIButton *)[btnsArr objectAtIndex:i];
         [button sizeToFit];
         if (i == 0) {
             button.frame = CGRectMake(0, btnY, button.bounds.size.width + btnEnhanceW, btnH);
         }else {
             button.frame = CGRectMake(CGRectGetMaxX(btnsArr[i - 1].frame) + btnMargin, btnY, button.bounds.size.width + btnEnhanceW, btnH);
         }
        if (index == self.rowsContainer.count - 1 && i == btnsArr.count - 1)  {
         _selfHeight = CGRectGetMaxY(button.frame);
     }
   }
 }

- (void)setFrame:(CGRect)frame {
     [super setFrame:frame];
    _selfFrame = frame;
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,939評論 25 709
  • 為什么起了這個題目,因?yàn)槲揖褪欠疵娴幕罱滩摹?小時候被我爸許諾得了獎狀回來,有100元獎勵。當(dāng)我第一次得了獎狀,還...
    人生留白_81e6閱讀 2,050評論 43 28
  • 信仰是一個非常有價值非??少F的詞,它意義深厚。 我認(rèn)為馴養(yǎng)是一:建立關(guān)系,例如:你中了一朵玫瑰花,你每天都為它澆水...
    蜜糖吖閱讀 262評論 0 1
  • 一, 高德地圖的。 系統(tǒng)配置: TARGETS/Build Settings/搜索 bridging/ Objec...
    plantAtree_dAp閱讀 914評論 6 0
  • 使用的是蘋果tv4, 系統(tǒng)為tvos 10.x 比較 筆者用的盒子不多, 安卓的有小米1, 小米1s, 大麥盒子,...
    Zszen閱讀 3,871評論 0 50

友情鏈接更多精彩內(nèi)容