博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
(适用于)ios 搜索标签列表 商城规格标签列表
阅读量:6948 次
发布时间:2019-06-27

本文共 6229 字,大约阅读时间需要 20 分钟。

hot3.png

效果图:   按钮黑色背景为不可交互  黄色为点击时候的效果  白色为默认颜色

231202_f4IS_1186234.gif

h文件

////  HomeTagView.h//  YangLand////  Created by 赵大财 on 16/3/21.//  Copyright © 2016年 tshiny. All rights reserved.//#import "BaseView.h"@class HomeTagView;@protocol HomeTagViewDelegate 
//点击代理方法@optional- (void)homeTagView:(HomeTagView *)buttonView clickButton:(UIButton *)button;@end@interface HomeTagView : BaseView- (instancetype)initWithTitle:(NSArray *)title mainViewWidth:(CGFloat)mainViewWidth;@property (nonatomic, weak) id
 delegate;/** *首次获取高度 首次计算 */- (CGFloat)heightForHomeTagView:(NSArray *)title mainViewWidth:(CGFloat)mainViewWidth;/** *二次获取高度 直接获取免计算 */- (CGFloat)heightGetHomeTagView;/** *改变按钮背景颜色 + 是否禁止交互 */- (void)changeBtnTitle:(NSArray *)title bgColor:(UIColor *)bgColor borderColor:(UIColor *)borderColor titleColor:(UIColor *)titleColor isAction:(BOOL)isAction;/** *开启点击选中 再次点击选中取消选中 */-(void)clickBtnChangeStateBgColor:(UIColor *)bgColor borderColor:(UIColor *)borderColor titleColor:(UIColor *)titleColor btn:(UIButton *)btn;@end

m文件

////  HomeTagView.m//  YangLand////  Created by 赵大财 on 16/3/21.//  Copyright © 2016年 tshiny. All rights reserved.//#import "HomeTagView.h"static const CGFloat btnHeight = 30; //按钮高度static const CGFloat fontSize = 16; //按钮文字大小static const CGFloat btnMarginW = 20; //按钮左右间距static const CGFloat btnMarginH = 10; //按钮上下间距static const CGFloat btnPadding = 20; //按钮内部边距static const CGFloat btnWidthMin = 40; //按钮最新宽度static const CGFloat btnBorderWidth = 0.5; //按钮文字边框宽度static const CGFloat btnRadius = 4; //按钮圆角#define TEXT_COLOR [UIColor blackColor] //按钮颜色#define BORDER_COLOR [UIColor blackColor] //边框颜色#define BTNBG_COLOR [UIColor whiteColor] //按钮的背景色@interface HomeTagView ()@property(strong,nonatomic) NSMutableArray *btnArr; //全部按钮@property(strong,nonatomic) UIButton *prevClickBtn; //@property(strong,nonatomic) NSArray *changeBtnArr; //已经被改变了颜色的按钮@property(strong,nonatomic) NSArray *btnFrameArr; //按钮frame@end@implementation HomeTagView- (instancetype)initWithTitle:(NSArray *)title mainViewWidth:(CGFloat)mainViewWidth {    self=[super init];    if (self) {        _btnArr = [NSMutableArray array];        NSArray * frame = [self returnBtnFrame:title :mainViewWidth];        int i = 0;        for (NSArray *arr in frame) {            UIButton *cbtn=[self createBtn:title[i]];            cbtn.x = [arr[0] floatValue]; //这里UIView扩展             cbtn.y = [arr[1] floatValue];            cbtn.width = [arr[2] floatValue];            cbtn.height = [arr[3] floatValue];            [self addSubview:cbtn];            [_btnArr addObject:cbtn];            i++;        }    }    return self;}- (CGFloat)heightForHomeTagView:(NSArray *)title mainViewWidth:(CGFloat) mainViewWidth {    CGFloat height;    if(title.count>0){        NSArray *frame = [self returnBtnFrame:title :mainViewWidth];        NSArray *frameRow = [frame lastObject];        height= [frameRow[1] floatValue]+btnHeight;    }else{        return 0;    }    return height;}- (CGFloat)heightGetHomeTagView {    NSArray *frameRow = [_btnFrameArr lastObject];    CGFloat height = [frameRow[1] floatValue]+btnHeight;    return height;}- (NSArray *)returnBtnFrame:(NSArray *)title : (CGFloat) mainViewWidth {    int row = 0; //行数    CGFloat currentX = 0; //当前X    CGFloat currentY = 0; //当前Y    CGFloat preBtnW = 0; //上一个按钮宽度    NSMutableArray * frameArr = [NSMutableArray array];    for (int i=0; i
mainViewWidth||(currentX+btnMarginW+btnWidth+preBtnW)>mainViewWidth){                row++;                currentX=0;                preBtnW = btnWidth;            }else{                currentX += (btnMarginW+preBtnW);                preBtnW = btnWidth;            }        }        currentY = row*(btnHeight+btnMarginH);        NSArray *arr = @[@(currentX),@(currentY),@(btnWidth),@(btnHeight)];        [frameArr addObject:arr];    }    _btnFrameArr = frameArr;    return frameArr;}- (UIButton*)createBtn:(NSString *)title {    UIButton * btn =[UIButton buttonWithType:UIButtonTypeRoundedRect];    btn.backgroundColor = BTNBG_COLOR;    [btn setTitle:title forState:UIControlStateNormal];    btn.layer.cornerRadius = btnRadius;    btn.layer.masksToBounds = YES;    UIColor *borderColor = BORDER_COLOR;    btn.layer.borderColor = borderColor.CGColor;    btn.layer.borderWidth = btnBorderWidth;    [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];    [btn setTitleColor:TEXT_COLOR forState:UIControlStateNormal];    return btn;}- (void)changeBtnTitle:(NSArray *)title bgColor:(UIColor *)bgColor borderColor:(UIColor *)borderColor titleColor:(UIColor *)titleColor isAction:(BOOL)isAction{    _changeBtnArr = title;    for (UIButton *btn in _btnArr) {        if([title containsObject:btn.titleLabel.text]){            btn.backgroundColor = bgColor;            [btn setTitleColor:titleColor forState:UIControlStateNormal];            UIColor *borderColor = bgColor;            btn.layer.borderColor = borderColor.CGColor;            btn.userInteractionEnabled = isAction;        }    }}- (void)clickBtnChangeStateBgColor:(UIColor *)bgColor borderColor:(UIColor *)borderColor titleColor:(UIColor *)titleColor btn:(UIButton *)btn {    if(btn == _prevClickBtn){        _prevClickBtn = nil;        btn.backgroundColor = BTNBG_COLOR;        UIColor *borderColor = BORDER_COLOR;        btn.layer.borderColor = borderColor.CGColor;        [btn setTitleColor:TEXT_COLOR forState:UIControlStateNormal];    }else{        for (UIButton *btn in _btnArr) {            if(![_changeBtnArr containsObject:btn.titleLabel.text]){                btn.backgroundColor = BTNBG_COLOR;                UIColor *borderColor = BORDER_COLOR;                btn.layer.borderColor = borderColor.CGColor;                [btn setTitleColor:TEXT_COLOR forState:UIControlStateNormal];            }        }        btn.backgroundColor = bgColor;        [btn setTitleColor:titleColor forState:UIControlStateNormal];        btn.layer.borderColor = borderColor.CGColor;        _prevClickBtn = btn;    }}- (void)btnClick:(UIButton *)btn {    if ([_delegate respondsToSelector:@selector(homeTagView:clickButton:)]) {        [_delegate homeTagView:self clickButton:btn ];    }    }@end

转载于:https://my.oschina.net/zhaodacai/blog/646783

你可能感兴趣的文章
点餐系统最终话--第三次冲刺
查看>>
attachEvent和addEventListener
查看>>
vmware中redhat忘记root密码
查看>>
LINUX 配置SVN
查看>>
怎样设计一个好的数据库
查看>>
go源码分析:strings包
查看>>
Min_25筛学习笔记
查看>>
错误分析:程序集未标记为可序列化
查看>>
禅与文件和文件夹组织的艺术 —— 上
查看>>
Linux自带-系统级性能分析工具 — Perf(转)
查看>>
[HNOI2010]物品调度
查看>>
Keras网络层之常用层Core
查看>>
C# 选择文件、选择文件夹、打开文件(或者文件夹) 路径中获取文件全路径、目录、扩展名、文件名称 追加、拷贝、删除、移动文件、创建目录 修改文件名、文件夹名!!...
查看>>
python学习笔记之——文件I/O
查看>>
【双旦献礼】Portal-Basic Java Web 应用开发框架 v3.0.1 正式发布(源码、示例及文档)...
查看>>
quartz.net的使用
查看>>
split-array-largest-sum(参考了discuss)
查看>>
Mybatis,模糊查询语句,以及传参数的正确写法
查看>>
路由器后面再接一个路由器怎么设置(二级路由)
查看>>
jetty服务器启动方法总结【备用】
查看>>