標籤自動佈局,搜尋歷史標籤
阿新 • • 發佈:2019-01-09
最近有個需求要求寫一個這樣的效果。最開始打算自己寫。然後整理了一下思路,並沒有實現,腦瓜都快炸了。看了一下網上其他人的實現。感覺不是自己想要的。然後回家想了一個晚上。早上來終於搞定了。
//歷史紀錄標籤 CGFloat lineHeight = 0;//記錄換行的y值 CGFloat marginY = 0;//累加每一行的行距 self.arraySearch = [self readFromFile];//資料原 for(NSInteger i=0;i<self.arraySearch.count;i++){ UIButton *tempBtn = [UIButton buttonWithType:UIButtonTypeRoundedRect]; [tempBtn setTitle:self.arraySearch[i] forState:UIControlStateNormal]; tempBtn.backgroundColor = [UIColor whiteColor]; [tempBtn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal]; CGFloat y = self.labelTitle.zlMaxY+20;//初始Y值 CGFloat x = 20+_btnframe.zlMaxX;//累加的x值 //如果換行了,就用換行之後的y值 if(lineHeight != 0){ y = lineHeight; } //設定按鈕的frame tempBtn.frame = BQAdaptationFrame(x, y, 40, 40); //記錄上一個按鈕的frame _btnframe = tempBtn; tempBtn.titleLabel.font = [UIFont systemFontOfSize:25*BQAdaptationWidth()]; tempBtn.layer.borderColor = [UIColor lightGrayColor].CGColor; tempBtn.layer.borderWidth = 0.5; [tempBtn sizeToFit];//自適應寬高 //設定按鈕自適應寬高之後重新設定frame CGRect frame = tempBtn.frame; frame.size.width = frame.size.width + 20 * BQAdaptationWidth(); tempBtn.frame = frame; //判斷是x值是否超出螢幕寬度 if(tempBtn.zlMaxX > IPHONE_WIDTH - 20){ //重新設定初始x值 frame.origin.x = 20*BQAdaptationWidth(); //記錄換行y lineHeight = self.labelTitle.zlMaxY+80+marginY; //累加行距 marginY += 60; //設定換行之後的y值 frame.origin.y = lineHeight * BQAdaptationWidth(); //設定frame tempBtn.frame = frame; } [self.backView addSubview:tempBtn]; }