近來在項目中需要用到SegmentView。感覺設(shè)置起來非常不方便。所以打算自己封裝一個SegmentView.
使用到第三方庫為RAC;
最終效果如下

segmentView效果.gif
這個項目里面核心的一點是如何將自己封裝的SegmentView上的點擊信號傳送出來。在這里使用了RACSignal。
主要文件介紹
QXSegmentView(自定義的SegmentView)
ViewController(添加SegmentView的控制器)
點擊的時候再Q(mào)XSegmentView中調(diào)用
- (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中去訂閱此信號。實現(xiàn)代碼為
- (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內(nèi)部卻設(shè)置QXSegmentView的UI樣式了。這些可以自由發(fā)揮。
此項目在gitHub的地址為:https://github.com/wangqingxue/QXSegmentView
感謝觀看。