1. 程式人生 > >標籤自動佈局,搜尋歷史標籤

標籤自動佈局,搜尋歷史標籤

最近有個需求要求寫一個這樣的效果。最開始打算自己寫。然後整理了一下思路,並沒有實現,腦瓜都快炸了。看了一下網上其他人的實現。感覺不是自己想要的。然後回家想了一個晚上。早上來終於搞定了。
//歷史紀錄標籤
    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];
    }