封装一个分段选择器,可自定义样式

前言

iOS开发过程中遇到一个界面,需要根据不同情况来展示不同的界面或者展示不同的数据。在系统的控件中有UISegmentedControl 来帮助我们来实现这个界面(当然你的产品经理不嫌弃的话)。在很多APP中,大多使用自定义封装的分段控制器来实现。界面看起来可能更加优雅。

屏幕快照 2017-08-25 上午11.31.43.png

思路

1 创建UIScrollView用来滑动分段选择器,如果UIScrollView的宽度小于屏幕宽度,则禁止滑动,如果UIScrollView宽度大于屏幕宽度,则开启滑动,可手动开启滑动(我这里没考虑复用,没使用UICollectionView)

2 创建文字按钮,默认选中为第一个按钮

3 创建下划线视图,默认在第一个按钮,和文字长度一样

4 点击按钮的点击事件

5 提供外部修改的接口

使用

1 签订代理sliderDeletege 

NSArray *array = @[@"对我感兴趣",@"看过我",@"新职位",@"随机查看"];
    AJSlideView *sliderView = [[AJSlideView alloc]initWithFrame:CGRectMake(20, 64, kWidth-40, 50) titleArray:array];
    [self.view addSubview:sliderView];
    sliderView.sliderDeletege = self;
    
//    sliderView.isCanSlider = YES;
//    sliderView.sliderLengthChoose = 1;
//    sliderView.buttonIndex = 2 ;
//    sliderView.sliderStyle = averageStyle;
//    sliderView.isShowSlider = YES;
//    sliderView.fontNumber = 14 ;
//    sliderView.sliderColor = [UIColor yellowColor];
//    sliderView.defaultButtonColor = [UIColor lightGrayColor];
//    sliderView.selectButtonColor = [UIColor greenColor];


/*! 必须实现的代理方法 */
- (void)clickIndex:(NSInteger)index{
    /*! index 从 0 开始计数 */
    NSLog(@"点击了第%li个按钮",index);
}

我里面使用的是Deletege 来实现回调,当然,你也可以改成bock,使用起来可能更方便。

提供的修改的借口

/*! 选择滑块的长度 */
@property(nonatomic,assign)sliderLengthChoose sliderLengthChoose;
/*! 是否显示滑块 */
@property(nonatomic,assign)BOOL isShowSlider ;
/*! 是否可以滑动 */
@property(nonatomic,assign)BOOL isCanSlider ;
/*! 字体的大小 */
@property(nonatomic,assign)NSInteger fontNumber ;
/*! 设置刚开始button的选中位置 */
@property(nonatomic,assign)NSInteger buttonIndex ;
/*! 默认按钮的颜色 ,默认为黑色 */
@property(nonatomic,strong)UIColor *defaultButtonColor ;
/*! 选中按钮的颜色  默认为红色 */
@property(nonatomic,strong)UIColor *selectButtonColor ;
/*! 滑块的颜色  默认和选择颜色一样为红色 */
@property(nonatomic,strong)UIColor *sliderColor ;
/*! 滑动样式选择 */
@property(nonatomic,assign)sliderStyle sliderStyle;

最后

demo地址 github地址 ,有问题可以提出。

你可能感兴趣的:(封装一个分段选择器,可自定义样式)