| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160 |
- //
- // HeaderViewSelectButton.m
- // RdP2PApp
- //
- // Created by 于海波 on 15/11/5.
- // 修改 by Mr_zhaohy on 15/12/3.
- // Copyright © 2015年 Yosef Lin. All rights reserved.
- //
- #import "HeaderViewSelectButton.h"
- @interface HeaderViewSelectButton ()<UIScrollViewDelegate>
- @end
- @implementation HeaderViewSelectButton
- - (instancetype)initWithFrame:(CGRect)frame {
-
- if (self = [super initWithFrame:frame])
- {
-
- }
- return self;
- }
- - (void)showHeaderSelectViewArray:(NSArray *)array andIndex:(NSInteger)index andShowLineView:(BOOL)show andNumber:(NSInteger)number {
-
- self.number = number;
- self.index = index;
- self.showLine = show;
- [self createSmScrollView:array];
- [self createBtns];
- }
- /**
- * 创建小的scrollView
- */
- -(void)createSmScrollView:(NSArray *)array {
-
- self.btnArr = array;
- self.smScrollV = [[UIScrollView alloc]init];
- self.smScrollV.showsHorizontalScrollIndicator = NO;
- self.smScrollV.showsVerticalScrollIndicator = NO;
- self.smScrollV.pagingEnabled = NO;//关闭翻页
- self.smScrollV.bounces = YES;//打开回弹效果
- self.smScrollV.delegate = self;// 遵守协议
-
- //设置scrollView的contentSize = 宽度/每页btn个数*btn总数(画布的大小)
- self.smScrollV.contentSize = CGSizeMake(SCREEN_WIDTH/self.number*(self.btnArr.count), self.frame.size.height);
- [self addSubview:self.smScrollV];
-
- [self.smScrollV mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.left.bottom.right.top.offset(0);
- }];
- }
- /**
- * 创建小的scrollView上的btn
- */
- -(void)createBtns{
-
- for (int i = 0; i < self.btnArr.count; i ++)
- {
- UIButton *btn = [UIButton buttonWithType:UIButtonTypeCustom];
- btn.tag = 1000+i;
- btn.titleLabel.font = [UIFont systemFontOfSize:14];
- [btn setTitle:self.btnArr[i] forState:UIControlStateNormal];
- [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
- [btn setTitleColor:[UIColor whiteColor] forState:UIControlStateSelected];
- [btn addTarget:self action:@selector(clickBtn:) forControlEvents:UIControlEventTouchUpInside];
- [self.smScrollV addSubview:btn];
-
- [btn mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.left.equalTo(self).offset(i*SCREEN_WIDTH/self.number);
- make.top.equalTo(self).offset(0);
- if (self.showLine)
- {
- make.bottom.equalTo(self).offset(-5);
- }
- else
- {
- make.bottom.equalTo(self).offset(0);
- }
- make.width.mas_equalTo(SCREEN_WIDTH/self.number);
- }];
-
-
- if (i == self.index)
- {//默认选择第一个
- btn.selected = YES;
- if (self.showLine)
- {
- self.lineView = [[UIView alloc]init ];
- self.lineView.backgroundColor = [UIColor whiteColor];
- self.lineView.layer.cornerRadius = 2;
- self.lineView.layer.masksToBounds = YES;
- [self.smScrollV addSubview:self.lineView];
- [self.lineView mas_makeConstraints:^(MASConstraintMaker *make) {
-
- make.centerX.equalTo(btn);
- make.size.mas_offset(CGSizeMake(self.lineWidth, 3));
- make.top.equalTo(btn.mas_bottom).offset(0);
- }];
- }
- // 改变btn的偏移量
- [self changeScrollOffset:btn];
- }
- }
- }
- /**
- * btn的点击事件 改变btn标题字体 颜色 大的滚动视图的偏移量 btn的偏移量
- */
- -(void)clickBtn:(UIButton*)btn{
-
- [self setbtnsColerAndFont:btn];
- self.changeBigScrollViewBlock((btn.tag-1000));//改变大的scrollView的偏移量 (自己实现不了 需要利用block 或者代理)
- [self changeScrollOffset:btn];// 改变btn的偏移量
- }
- /**
- * 修改btn的大小和颜色
- */
- -(void)setbtnsColerAndFont:(UIButton*)btn{
-
- for (UIButton *button in self.smScrollV.subviews)
- {
- if ([button isKindOfClass:[UIButton class]])
- {
- if (button == btn)
- {
- button.selected = YES;
- [self.lineView mas_remakeConstraints:^(MASConstraintMaker *make) {
- make.centerX.equalTo(btn);
- make.size.mas_offset(CGSizeMake(self.lineWidth, 3));
- make.top.equalTo(btn.mas_bottom).offset(0);
- }];
- }
- else
- {
- button.selected = NO;
- }
- }
- }
- }
- /**
- * 修改btn的偏移量
- */
- -(void)changeScrollOffset:(UIButton*)btn {
-
- if (btn.tag > 1001 && btn.tag < (1000 + self.btnArr.count) - 2)
- {
- [self.smScrollV setContentOffset:CGPointMake(btn.frame.origin.x - btn.frame.size.width*2, 0) animated:YES];
- }
-
- }
- @end
|