近来在项目中需要用到SegmentView。感觉设置起来非常不方便。所以打算自己封装一个SegmentView.
使用到第三方库为RAC;
最终效果如下
这个项目里面核心的一点是如何将自己封装的SegmentView上的点击信号传送出来。在这里使用了RACSignal。
主要文件介绍
QXSegmentView(自定义的SegmentView)
ViewController(添加SegmentView的控制器)
点击的时候再QXSegmentView中调用
- (void)setSelectWithIndex:(NSInteger)select{
if (self.currentSelect && self.currentSelect == select){
return;
}
UIImage *imageClick = [UIImage imageNamed:self.arrayImageName[select]];
[self.baseImageView setImage:imageClick];
UILabel *labelSelect = self.arrayLabel[select];
[labelSelect setTextColor:[UIColor grayColor]];
UILabel *labelCurrent = self.arrayLabel[_currentSelect];
[labelCurrent setTextColor:[UIColor blackColor]];
_currentSelect = select;
[self.subject sendNext:@(select)];
}
然后在添加SegmentView的ViewController中去订阅此信号。实现代码为
- (void)initRAC{
[self.segmentView.signalClick subscribeNext:^(id x) {
NSInteger index = [(NSNumber *)x integerValue];
UIViewController *controller = self.arrayController[index];
[self.view addSubview:controller.view];
if (_currentSelect == index){
return ;
}
UIViewController *currentController = self.arrayController[_currentSelect];
[currentController.view removeFromSuperview];
_currentSelect = index;
}];
}
其他的就是在SegmentView内部却设置QXSegmentView的UI样式了。这些可以自由发挥。
此项目在gitHub的地址为:https://github.com/wangqingxue/QXSegmentView
感谢观看。