美文网首页
iOS 单选按钮实现--自带button控件使用

iOS 单选按钮实现--自带button控件使用

作者: 心如止水的鱼 | 来源:发表于2016-08-20 10:31 被阅读0次
    效果预览

    一、思路解析

    充分利用button的select属性,设置button的选中及非选中状态。设置一个全局的选中button(当前选中的button),这样一个简单的单选功能就实现了。

    二、具体源码

    (1)准备工作:

    @property (nonatomic,strong) UIView *SearchTopview;

    @property (nonatomic,weak) UIButton *Selectbutton;

    #pragma mark - getter and setter

    - (UIView *)SearchTopview{

    if (_SearchTopview == nil) {

    _SearchTopview = [[UIView alloc] init];

    _SearchTopview.frame = CGRectMake(0, 0, SCREEN_WIDTH, 100);

    }

    return _SearchTopview;

    }

    (2)首先一个for循环设置按钮

    UILabel *lbTitle = [[UILabel alloc]init];

    lbTitle.frame = CGRectMake(10, 0, SCREEN_WIDTH - 20, 30);

    lbTitle.textAlignment = NSTextAlignmentLeft;

    lbTitle.text = @"选择你要的搜索分类";

    lbTitle.textColor = [UIColor grayColor];

    lbTitle.font = HiraginoMidFONT;

    [self.SearchTopview addSubview:lbTitle];

    NSArray *titlearray = @[@"资讯",@"餐答",@"秀场",@"厨师",@"掌柜",@"秘籍",@"课堂",@"产品",@"悬赏",@"人物志"];

    int col = 4;

    int margin = 10;

    for (int i = 0; i < titlearray.count; i++) {

    int page = i/col;

    int index = i%col;

    UIButton *BtnSearch = [[UIButton alloc]initWithFrame:CGRectMake(margin + index*(SCREEN_WIDTH - (col + 1)*margin)/col + margin*index,40*page + 40,(SCREEN_WIDTH - (col + 1)*margin)/col,30 )];

    BtnSearch.layer.cornerRadius = 5;

    BtnSearch.layer.masksToBounds = YES;

    BtnSearch.layer.shadowOffset =  CGSizeMake(1, 1);

    BtnSearch.layer.shadowOpacity = 0.8;

    BtnSearch.layer.shadowColor =  [UIColor blackColor].CGColor;

    BtnSearch.backgroundColor = [UIColor lightGrayColor];

    BtnSearch.tag = i;

    [BtnSearch setTitle:titlearray[i] forState:UIControlStateNormal];

    [BtnSearch setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];

    [BtnSearch setTitleColor:BackyellowColor forState:UIControlStateSelected];

    BtnSearch.titleLabel.font = HiraginoMidFONT;

    [BtnSearch addTarget:self action:@selector(SelectBtnSearch:) forControlEvents:UIControlEventTouchUpInside];

    if (i == 0) {

    BtnSearch.backgroundColor = BackblackColor;

    BtnSearch.selected = YES;

    self.Selectbutton = BtnSearch;

    }

    [self.SearchTopview addSubview:BtnSearch];

    }

    self.SearchTopview.height = [CalculationTool rowWithcount:titlearray.count andcol:col]*40 + 45;

    (3)按钮事件

    #pragma mark - event

    - (void)SelectBtnSearch:(UIButton *)Btn{

    if (!Btn.isSelected) {

    self.Selectbutton.selected = !self.Selectbutton.selected;

    self.Selectbutton.backgroundColor = [UIColor lightGrayColor];

    Btn.selected = !Btn.selected;

    Btn.backgroundColor = BackblackColor;

    self.Selectbutton = Btn;

    }

    }

    (4)按钮事件 简述

    if (!Btn.isSelected):使点击当前按钮是不执行事件

    self.Selectbutton.selected = !self.Selectbutton.selected;  Btn.selected = !Btn.selected;

    已经选中的按钮(self.Selectbutton)及当前点击按钮(Btn)的取反 使选中按钮为!select状态,单击按钮为selectt状态

    self.Selectbutton = Btn; 所以现在的选中按钮就替换为你现在所点击的按钮了。

    一个简单的单选按钮就实现了。 第一次尝试写文章分享,文笔啥的差了,欢迎点评,先来个简单的试试水哈、。

    相关文章

      网友评论

          本文标题:iOS 单选按钮实现--自带button控件使用

          本文链接:https://www.haomeiwen.com/subject/ngcisttx.html