几行代码集成单选按钮功能

来源:互联网 发布:java的对称杨辉三角 编辑:程序博客网 时间:2024/06/13 12:22
NSArray *arr = @[@"全部",@"文章",@"片段",@"视频",@"照片"];//按钮title数组    self.radioButtonView.btnTitleArr = arr;//传一个数组进去    CGFloat radioButtonViewH = 34 * arr.count;//计算高度    self.radioButtonView.frame = CGRectMake(width-102, (height-radioButtonViewH)/2, 102, radioButtonViewH);    //按钮的点击事件    [self.radioButtonView returnBtnClickBlock:^(NSString *btnTitle) {        NSLog(@"%@",btnTitle);    }];



////  radioButtonView.h//  Yeos////  Created by 潘东 on 16/5/23.//  Copyright © 2016年 Dream. All rights reserved.//#import <UIKit/UIKit.h>typedef void (^ReturnBtnClick) (NSString *btnTitle);//声明一个block@interface radioButtonView : UIView//按钮标题数组@property (strong, nonatomic) NSArray *btnTitleArr;//声明block属性@property (copy,  nonatomic) ReturnBtnClick returnBtnClickBlock;//创建一个Block语句块的函数-(void)returnBtnClickBlock:(ReturnBtnClick)block;@end



////  radioButtonView.m//  Yeos////  Created by 潘东 on 16/5/23.//  Copyright © 2016年 Dream. All rights reserved.//#import "radioButtonView.h"@interface radioButtonView (){    CGFloat x;    CGFloat y;    CGFloat w;    CGFloat h;    CGFloat gap;}@property (strong, nonatomic) UIButton *btn;//用于记录选中按钮@end@implementation radioButtonView//拿到按钮个数循环创建按钮-(void)setBtnTitleArr:(NSMutableArray *)btnTitleArr{    for (int i = 0 ; i < btnTitleArr.count; i++) {        UIButton *btn = [[UIButton alloc]init];        [btn setTitleColor:[UIColor grayColor] forState:UIControlStateNormal];//普通状态        [btn setBackgroundImage:[UIImage imageNamed:@"unchecked"] forState:UIControlStateNormal];                [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];//选中状态        [btn setBackgroundImage:[UIImage imageNamed:@"checked"] forState:UIControlStateSelected];                //按钮文字        [btn setTitle:btnTitleArr[i] forState:UIControlStateNormal];        btn.titleLabel.font = [UIFont systemFontOfSize:12.0f];//按钮文字大小        btn.titleEdgeInsets = UIEdgeInsetsMake(0, 0, 4, 0);//文字偏移量        btn.showsTouchWhenHighlighted=YES;//特效        if (i == 0) {// 如果是第一个设置他选中状态            btn.selected = YES;            self.btn = btn;        }        [btn addTarget:self action:@selector(btnClick:) forControlEvents:UIControlEventTouchUpInside];        btn.tag = i;        btn.frame = CGRectMake(x, y, w, h);        y += h + gap;        [self addSubview:btn];    }}//处理按钮点击事件-(void)btnClick:(UIButton *)btn{    if (self.returnBtnClickBlock) {//把按钮标题return出去        self.returnBtnClickBlock(btn.titleLabel.text);    }    btn.selected = YES;//设置选中状态    if (btn.tag != self.btn.tag) {//如果不是选中了上一次选中的按钮就把选中状态改为no        self.btn.selected = NO;    }    self.btn = btn;//记录上一次选中的按钮}-(void)returnBtnClickBlock:(ReturnBtnClick)block{    if (block) {        self.returnBtnClickBlock = block;    }}-(instancetype)initWithFrame:(CGRect)frame{    if (self = [super initWithFrame:frame]) {        w = 0.0;        y = 0.0;        w = 100;        h = 24;        gap = 8;    }    return self;}@end

源代码下载地址:https://github.com/antihumanPerson/radioButton

1 0
原创粉丝点击