From 83b9d5c682b21d88133f24da0f94dd56bd79e687 Mon Sep 17 00:00:00 2001 From: 单军华 Date: Thu, 19 Jul 2018 13:38:55 +0800 Subject: [PATCH] change --- screendisplay/Pods/ZJScrollPageView/ZJScrollPageView/ZJScrollPageView/ZJScrollSegmentView.m | 734 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 734 insertions(+), 0 deletions(-) diff --git a/screendisplay/Pods/ZJScrollPageView/ZJScrollPageView/ZJScrollPageView/ZJScrollSegmentView.m b/screendisplay/Pods/ZJScrollPageView/ZJScrollPageView/ZJScrollPageView/ZJScrollSegmentView.m new file mode 100755 index 0000000..dc39d66 --- /dev/null +++ b/screendisplay/Pods/ZJScrollPageView/ZJScrollPageView/ZJScrollPageView/ZJScrollSegmentView.m @@ -0,0 +1,734 @@ +// +// ZJScrollSegmentView.m +// ZJScrollPageView +// +// Created by jasnig on 16/5/6. +// Copyright �� 2016��� ZeroJ. All rights reserved. +// + +#import "ZJScrollSegmentView.h" +#import "ZJTitleView.h" +#import "UIView+ZJFrame.h" + +@interface ZJScrollSegmentView ()<UIScrollViewDelegate> { + CGFloat _currentWidth; + NSUInteger _currentIndex; + NSUInteger _oldIndex; +// BOOL _isScroll; +} +// ��������� +@property (strong, nonatomic) UIView *scrollLine; +// ������ +@property (strong, nonatomic) UIView *coverLayer; +// ������scrollView +@property (strong, nonatomic) UIScrollView *scrollView; +// ������ImageView +@property (strong, nonatomic) UIImageView *backgroundImageView; +// ��������������� +@property (strong, nonatomic) UIButton *extraBtn; + + +// ������������������������������rgb������, ��������������������������������� +@property (strong, nonatomic) NSArray *deltaRGB; +@property (strong, nonatomic) NSArray *selectedColorRgb; +@property (strong, nonatomic) NSArray *normalColorRgb; +/** ������������������label */ +@property (nonatomic, strong) NSMutableArray *titleViews; +// ������������������������������������������ +@property (nonatomic, strong) NSMutableArray *titleWidths; +// ������������������ +@property (copy, nonatomic) TitleBtnOnClickBlock titleBtnOnClick; + +@end + +@implementation ZJScrollSegmentView + +static CGFloat const xGap = 5.0; +static CGFloat const wGap = 2*xGap; +static CGFloat const contentSizeXOff = 20.0; + +#pragma mark - life cycle +- (instancetype)initWithFrame:(CGRect )frame segmentStyle:(ZJSegmentStyle *)segmentStyle delegate:(id<ZJScrollPageViewDelegate>)delegate titles:(NSArray *)titles titleDidClick:(TitleBtnOnClickBlock)titleDidClick { + if (self = [super initWithFrame:frame]) { + self.segmentStyle = segmentStyle; + self.titles = titles; + self.titleBtnOnClick = titleDidClick; + self.delegate = delegate; + _currentIndex = 0; + _oldIndex = 0; + _currentWidth = frame.size.width; + + if (!self.segmentStyle.isScrollTitle) { // ���������������������������������������������������������������������������, ������������������������ + + self.segmentStyle.scaleTitle = !(self.segmentStyle.isShowCover || self.segmentStyle.isShowLine); + } + + if (self.segmentStyle.isShowImage) {//������������������������������ + self.segmentStyle.scaleTitle = NO; + self.segmentStyle.showCover = NO; + self.segmentStyle.gradualChangeTitleColor = NO; + } + + // ���������frame������������������������������������������frame���, ������������layoutsubView()������������ + [self setupSubviews]; + [self setupUI]; + + } + + return self; +} +- (void)setupSubviews { + + [self addSubview:self.scrollView]; + [self addScrollLineOrCoverOrExtraBtn]; + [self setupTitles]; +} + +- (void)addScrollLineOrCoverOrExtraBtn { + if (self.segmentStyle.isShowLine) { + [self.scrollView addSubview:self.scrollLine]; + } + + if (self.segmentStyle.isShowCover) { + [self.scrollView insertSubview:self.coverLayer atIndex:0]; + + } + + if (self.segmentStyle.isShowExtraButton) { + [self addSubview:self.extraBtn]; + } +} + +- (void)dealloc +{ +#if DEBUG + NSLog(@"ZJScrollSegmentView ---- ������"); + +#endif +} + +#pragma mark - button action + +- (void)titleLabelOnClick:(UITapGestureRecognizer *)tapGes { + + ZJTitleView *currentLabel = (ZJTitleView *)tapGes.view; + + if (!currentLabel) { + return; + } + + _currentIndex = currentLabel.tag; + + [self adjustUIWhenBtnOnClickWithAnimate:true]; +} + +- (void)extraBtnOnClick:(UIButton *)extraBtn { + + if (self.extraBtnOnClick) { + self.extraBtnOnClick(extraBtn); + } +} + + +#pragma mark - private helper + +- (void)setupTitles { + + if (self.titles.count == 0) return; + + NSInteger index = 0; + for (NSString *title in self.titles) { + + ZJTitleView *titleView = [[ZJTitleView alloc] initWithFrame:CGRectZero]; + titleView.tag = index; + + titleView.font = self.segmentStyle.titleFont; + titleView.text = title; + titleView.textColor = self.segmentStyle.normalTitleColor; + titleView.imagePosition = self.segmentStyle.imagePosition; + + + if (self.delegate && [self.delegate respondsToSelector:@selector(setUpTitleView:forIndex:)]) { + [self.delegate setUpTitleView:titleView forIndex:index]; + } + + UITapGestureRecognizer *tapGes = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(titleLabelOnClick:)]; + [titleView addGestureRecognizer:tapGes]; + + CGFloat titleViewWidth = [titleView titleViewWidth]; + [self.titleWidths addObject:@(titleViewWidth)]; + + [self.titleViews addObject:titleView]; + [self.scrollView addSubview:titleView]; + + index++; + + } + +} + +- (void)setupUI { + if (self.titles.count == 0) return; + + [self setupScrollViewAndExtraBtn]; + [self setUpTitleViewsPosition]; + [self setupScrollLineAndCover]; + + if (self.segmentStyle.isScrollTitle) { // ������������������ + ZJTitleView *lastTitleView = (ZJTitleView *)self.titleViews.lastObject; + + if (lastTitleView) { + self.scrollView.contentSize = CGSizeMake(CGRectGetMaxX(lastTitleView.frame) + contentSizeXOff, 0.0); + } + } + +} + +- (void)setupScrollViewAndExtraBtn { + CGFloat extraBtnW = 44.0; + CGFloat extraBtnY = 5.0; + + // UILabel *lastLabel = _titleLabels.lastObject; + // CGFloat maxX = CGRectGetMaxX(lastLabel.frame) + 8; + CGFloat scrollW = self.extraBtn ? _currentWidth - extraBtnW : _currentWidth; + // if (maxX < _currentWidth) { + // scrollW = maxX; + // } + self.scrollView.frame = CGRectMake(0.0, 0.0, scrollW, self.zj_height); + + if (self.extraBtn) { + self.extraBtn.frame = CGRectMake(scrollW , extraBtnY, extraBtnW, self.zj_height - 2*extraBtnY); + } +} + +- (void)setUpTitleViewsPosition { + CGFloat titleX = 0.0; + CGFloat titleY = 0.0; + CGFloat titleW = 0.0; + CGFloat titleH = self.zj_height - self.segmentStyle.scrollLineHeight; + + if (!self.segmentStyle.isScrollTitle) {// ������������������, ������������ + titleW = _currentWidth / self.titles.count; + + NSInteger index = 0; + for (ZJTitleView *titleView in self.titleViews) { + + titleX = index * titleW; + + titleView.frame = CGRectMake(titleX, titleY, titleW, titleH); + if (self.segmentStyle.isShowImage) { + [titleView adjustSubviewFrame]; + } + index++; + } + + } else { + NSInteger index = 0; + float lastLableMaxX = self.segmentStyle.titleMargin; + float addedMargin = 0.0f; + if (self.segmentStyle.isAutoAdjustTitlesWidth) { + + float allTitlesWidth = self.segmentStyle.titleMargin; + for (int i = 0; i<self.titleWidths.count; i++) { + allTitlesWidth = allTitlesWidth + [self.titleWidths[i] floatValue] + self.segmentStyle.titleMargin; + } + + + addedMargin = allTitlesWidth < self.scrollView.bounds.size.width ? (self.scrollView.bounds.size.width - allTitlesWidth)/self.titleWidths.count : 0 ; + } + + for (ZJTitleView *titleView in self.titleViews) { + titleW = [self.titleWidths[index] floatValue]; + titleX = lastLableMaxX + addedMargin/2; + + lastLableMaxX += (titleW + addedMargin + self.segmentStyle.titleMargin); + + titleView.frame = CGRectMake(titleX, titleY, titleW, titleH); + if (self.segmentStyle.isShowImage) { + [titleView adjustSubviewFrame]; + } + index++; + + } + + } + + ZJTitleView *currentTitleView = (ZJTitleView *)self.titleViews[_currentIndex]; + currentTitleView.currentTransformSx = 1.0; + if (currentTitleView) { + + // ������, ���������������label���transform + if (self.segmentStyle.isScaleTitle) { + currentTitleView.currentTransformSx = self.segmentStyle.titleBigScale; + } + // ��������������������������������� + currentTitleView.textColor = self.segmentStyle.selectedTitleColor; + if (self.segmentStyle.isShowImage) { + currentTitleView.selected = YES; + } + } + +} + +- (void)setupScrollLineAndCover { + + ZJTitleView *firstLabel = (ZJTitleView *)self.titleViews[0]; + CGFloat coverX = firstLabel.zj_x; + CGFloat coverW = firstLabel.zj_width; + CGFloat coverH = self.segmentStyle.coverHeight; + CGFloat coverY = (self.bounds.size.height - coverH) * 0.5; + + if (self.scrollLine) { + + if (self.segmentStyle.isScrollTitle) { + self.scrollLine.frame = CGRectMake(coverX , self.zj_height - self.segmentStyle.scrollLineHeight, coverW , self.segmentStyle.scrollLineHeight); + + } else { + if (self.segmentStyle.isAdjustCoverOrLineWidth) { + coverW = [self.titleWidths[_currentIndex] floatValue] + wGap; + coverX = (firstLabel.zj_width - coverW) * 0.5; + } + + self.scrollLine.frame = CGRectMake(coverX , self.zj_height - self.segmentStyle.scrollLineHeight, coverW , self.segmentStyle.scrollLineHeight); + + } + + + } + + if (self.coverLayer) { + + if (self.segmentStyle.isScrollTitle) { + self.coverLayer.frame = CGRectMake(coverX - xGap, coverY, coverW + wGap, coverH); + + } else { + if (self.segmentStyle.isAdjustCoverOrLineWidth) { + coverW = [self.titleWidths[_currentIndex] floatValue] + wGap; + coverX = (firstLabel.zj_width - coverW) * 0.5; + } + + self.coverLayer.frame = CGRectMake(coverX, coverY, coverW, coverH); + + } + + + } + +} + + +#pragma mark - public helper + +- (void)adjustUIWhenBtnOnClickWithAnimate:(BOOL)animated { + if (_currentIndex == _oldIndex) { return; } + + ZJTitleView *oldTitleView = (ZJTitleView *)self.titleViews[_oldIndex]; + ZJTitleView *currentTitleView = (ZJTitleView *)self.titleViews[_currentIndex]; + + CGFloat animatedTime = animated ? 0.30 : 0.0; + + __weak typeof(self) weakSelf = self; + + [UIView animateWithDuration:animatedTime animations:^{ + oldTitleView.textColor = weakSelf.segmentStyle.normalTitleColor; + currentTitleView.textColor = weakSelf.segmentStyle.selectedTitleColor; + oldTitleView.selected = NO; + currentTitleView.selected = YES; + if (weakSelf.segmentStyle.isScaleTitle) { + oldTitleView.currentTransformSx = 1.0; + currentTitleView.currentTransformSx = weakSelf.segmentStyle.titleBigScale; + } + + if (weakSelf.scrollLine) { + if (weakSelf.segmentStyle.isScrollTitle) { + weakSelf.scrollLine.zj_x = currentTitleView.zj_x; + weakSelf.scrollLine.zj_width = currentTitleView.zj_width; + } else { + if (self.segmentStyle.isAdjustCoverOrLineWidth) { + CGFloat scrollLineW = [self.titleWidths[_currentIndex] floatValue] + wGap; + CGFloat scrollLineX = currentTitleView.zj_x + (currentTitleView.zj_width - scrollLineW) * 0.5; + weakSelf.scrollLine.zj_x = scrollLineX; + weakSelf.scrollLine.zj_width = scrollLineW; + } else { + weakSelf.scrollLine.zj_x = currentTitleView.zj_x; + weakSelf.scrollLine.zj_width = currentTitleView.zj_width; + } + + } + + } + + if (weakSelf.coverLayer) { + if (weakSelf.segmentStyle.isScrollTitle) { + + weakSelf.coverLayer.zj_x = currentTitleView.zj_x - xGap; + weakSelf.coverLayer.zj_width = currentTitleView.zj_width + wGap; + } else { + if (self.segmentStyle.isAdjustCoverOrLineWidth) { + CGFloat coverW = [self.titleWidths[_currentIndex] floatValue] + wGap; + CGFloat coverX = currentTitleView.zj_x + (currentTitleView.zj_width - coverW) * 0.5; + weakSelf.coverLayer.zj_x = coverX; + weakSelf.coverLayer.zj_width = coverW; + } else { + weakSelf.coverLayer.zj_x = currentTitleView.zj_x; + weakSelf.coverLayer.zj_width = currentTitleView.zj_width; + } + } + + } + + } completion:^(BOOL finished) { + [weakSelf adjustTitleOffSetToCurrentIndex:_currentIndex]; + + }]; + + _oldIndex = _currentIndex; + if (self.titleBtnOnClick) { + self.titleBtnOnClick(currentTitleView, _currentIndex); + } +} + +- (void)adjustUIWithProgress:(CGFloat)progress oldIndex:(NSInteger)oldIndex currentIndex:(NSInteger)currentIndex { + if (oldIndex < 0 || + oldIndex >= self.titles.count || + currentIndex < 0 || + currentIndex >= self.titles.count + ) { + return; + } + _oldIndex = currentIndex; + + ZJTitleView *oldTitleView = (ZJTitleView *)self.titleViews[oldIndex]; + ZJTitleView *currentTitleView = (ZJTitleView *)self.titleViews[currentIndex]; + + + CGFloat xDistance = currentTitleView.zj_x - oldTitleView.zj_x; + CGFloat wDistance = currentTitleView.zj_width - oldTitleView.zj_width; + + if (self.scrollLine) { + + if (self.segmentStyle.isScrollTitle) { + self.scrollLine.zj_x = oldTitleView.zj_x + xDistance * progress; + self.scrollLine.zj_width = oldTitleView.zj_width + wDistance * progress; + } else { + if (self.segmentStyle.isAdjustCoverOrLineWidth) { + CGFloat oldScrollLineW = [self.titleWidths[oldIndex] floatValue] + wGap; + CGFloat currentScrollLineW = [self.titleWidths[currentIndex] floatValue] + wGap; + wDistance = currentScrollLineW - oldScrollLineW; + + CGFloat oldScrollLineX = oldTitleView.zj_x + (oldTitleView.zj_width - oldScrollLineW) * 0.5; + CGFloat currentScrollLineX = currentTitleView.zj_x + (currentTitleView.zj_width - currentScrollLineW) * 0.5; + xDistance = currentScrollLineX - oldScrollLineX; + self.scrollLine.zj_x = oldScrollLineX + xDistance * progress; + self.scrollLine.zj_width = oldScrollLineW + wDistance * progress; + } else { + self.scrollLine.zj_x = oldTitleView.zj_x + xDistance * progress; + self.scrollLine.zj_width = oldTitleView.zj_width + wDistance * progress; + } + } + + } + + if (self.coverLayer) { + if (self.segmentStyle.isScrollTitle) { + self.coverLayer.zj_x = oldTitleView.zj_x + xDistance * progress - xGap; + self.coverLayer.zj_width = oldTitleView.zj_width + wDistance * progress + wGap; + } else { + if (self.segmentStyle.isAdjustCoverOrLineWidth) { + CGFloat oldCoverW = [self.titleWidths[oldIndex] floatValue] + wGap; + CGFloat currentCoverW = [self.titleWidths[currentIndex] floatValue] + wGap; + wDistance = currentCoverW - oldCoverW; + CGFloat oldCoverX = oldTitleView.zj_x + (oldTitleView.zj_width - oldCoverW) * 0.5; + CGFloat currentCoverX = currentTitleView.zj_x + (currentTitleView.zj_width - currentCoverW) * 0.5; + xDistance = currentCoverX - oldCoverX; + self.coverLayer.zj_x = oldCoverX + xDistance * progress; + self.coverLayer.zj_width = oldCoverW + wDistance * progress; + } else { + self.coverLayer.zj_x = oldTitleView.zj_x + xDistance * progress; + self.coverLayer.zj_width = oldTitleView.zj_width + wDistance * progress; + } + } + } + + // ������ + if (self.segmentStyle.isGradualChangeTitleColor) { + + oldTitleView.textColor = [UIColor colorWithRed:[self.selectedColorRgb[0] floatValue] + [self.deltaRGB[0] floatValue] * progress green:[self.selectedColorRgb[1] floatValue] + [self.deltaRGB[1] floatValue] * progress blue:[self.selectedColorRgb[2] floatValue] + [self.deltaRGB[2] floatValue] * progress alpha:1.0]; + currentTitleView.textColor = [UIColor colorWithRed:[self.normalColorRgb[0] floatValue] - [self.deltaRGB[0] floatValue] * progress green:[self.normalColorRgb[1] floatValue] - [self.deltaRGB[1] floatValue] * progress blue:[self.normalColorRgb[2] floatValue] - [self.deltaRGB[2] floatValue] * progress alpha:1.0]; + + } + + if (!self.segmentStyle.isScaleTitle) { + return; + } + + CGFloat deltaScale = self.segmentStyle.titleBigScale - 1.0; + oldTitleView.currentTransformSx = self.segmentStyle.titleBigScale - deltaScale * progress; + currentTitleView.currentTransformSx = 1.0 + deltaScale * progress; + + +} + +- (void)adjustTitleOffSetToCurrentIndex:(NSInteger)currentIndex { + // ������������������item������������������ + + for (NSInteger index = currentIndex - 3; index < currentIndex + 3; index++) { + if (index >= 0 && index <= _titles.count - 1) { + ZJTitleView *nextTitleView = _titleViews[index]; + if (index != currentIndex) { + nextTitleView.textColor = self.segmentStyle.normalTitleColor; + nextTitleView.currentTransformSx = 1.0; + nextTitleView.selected = NO; + } + else { + nextTitleView.textColor = self.segmentStyle.selectedTitleColor; + if (self.segmentStyle.isScaleTitle) { + nextTitleView.currentTransformSx = self.segmentStyle.titleBigScale; + } + nextTitleView.selected = YES; + } + + } + } + + + if (self.scrollView.contentSize.width != self.scrollView.bounds.size.width + contentSizeXOff) {// ������������ + ZJTitleView *currentTitleView = (ZJTitleView *)_titleViews[currentIndex]; + self.userInteractionEnabled = NO; + + CGFloat offSetx = currentTitleView.center.x - _currentWidth * 0.5; + if (offSetx < 0) { + offSetx = 0; + self.userInteractionEnabled = YES; + + } + CGFloat extraBtnW = self.extraBtn ? self.extraBtn.zj_width : 0.0; + CGFloat maxOffSetX = self.scrollView.contentSize.width - (_currentWidth - extraBtnW); + + if (maxOffSetX < 0) { + maxOffSetX = 0; + } + + if (offSetx > maxOffSetX) { + offSetx = maxOffSetX; + self.userInteractionEnabled = YES; + } + + if (!self.segmentStyle.isGradualChangeTitleColor) { + int index = 0; + for (ZJTitleView *titleView in _titleViews) { + if (index != currentIndex) { + titleView.textColor = self.segmentStyle.normalTitleColor; + titleView.currentTransformSx = 1.0; + titleView.selected = NO; + } + else { + titleView.textColor = self.segmentStyle.selectedTitleColor; + if (self.segmentStyle.isScaleTitle) { + titleView.currentTransformSx = self.segmentStyle.titleBigScale; + } + titleView.selected = YES; + + } + + index++; + } + } + [self.scrollView setContentOffset:CGPointMake(offSetx, 0.0) animated:YES]; + } + + +} + +- (void)setSelectedIndex:(NSInteger)index animated:(BOOL)animated { + NSAssert(index >= 0 && index < self.titles.count, @"������������������������!!"); + + if (index < 0 || index >= self.titles.count) { + return; + } + + _currentIndex = index; + [self adjustUIWhenBtnOnClickWithAnimate:animated]; +} + +- (void)reloadTitlesWithNewTitles:(NSArray *)titles { + [self.scrollView.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; + + self.titleWidths = nil; + self.titleViews = nil; + self.titles = nil; + self.titles = [titles copy]; + if (self.titles.count == 0) return; + for (UIView *subview in self.subviews) { + [subview removeFromSuperview]; + } + [self setupSubviews]; + [self setupUI]; + [self setSelectedIndex:0 animated:YES]; + +} + +- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { + self.userInteractionEnabled = YES; +} + +#pragma mark - getter --- setter + +- (UIView *)scrollLine { + + if (!self.segmentStyle.isShowLine) { + return nil; + } + + if (!_scrollLine) { + UIView *lineView = [[UIView alloc] init]; + lineView.backgroundColor = self.segmentStyle.scrollLineColor; + + _scrollLine = lineView; + + } + + return _scrollLine; +} + +- (UIView *)coverLayer { + if (!self.segmentStyle.isShowCover) { + return nil; + } + + if (_coverLayer == nil) { + UIView *coverView = [[UIView alloc] init]; + coverView.backgroundColor = self.segmentStyle.coverBackgroundColor; + coverView.layer.cornerRadius = self.segmentStyle.coverCornerRadius; + coverView.layer.masksToBounds = YES; + + _coverLayer = coverView; + + } + + return _coverLayer; +} + +- (UIButton *)extraBtn { + + if (!self.segmentStyle.showExtraButton) { + return nil; + } + if (!_extraBtn) { + UIButton *btn = [UIButton new]; + [btn addTarget:self action:@selector(extraBtnOnClick:) forControlEvents:UIControlEventTouchUpInside]; + NSString *imageName = self.segmentStyle.extraBtnBackgroundImageName ? self.segmentStyle.extraBtnBackgroundImageName : @""; + [btn setImage:[UIImage imageNamed:imageName] forState:UIControlStateNormal]; + btn.backgroundColor = [UIColor whiteColor]; + // ��������������������������� + btn.layer.shadowColor = [UIColor whiteColor].CGColor; + btn.layer.shadowOffset = CGSizeMake(-5, 0); + btn.layer.shadowOpacity = 1; + + _extraBtn = btn; + } + return _extraBtn; +} + +- (UIScrollView *)scrollView { + + if (!_scrollView) { + UIScrollView *scrollView = [[UIScrollView alloc] init]; + scrollView.showsHorizontalScrollIndicator = NO; + scrollView.scrollsToTop = NO; + scrollView.bounces = self.segmentStyle.isSegmentViewBounces; + scrollView.pagingEnabled = NO; + scrollView.delegate = self; + _scrollView = scrollView; + } + return _scrollView; +} + +- (UIImageView *)backgroundImageView { + + if (!_backgroundImageView) { + UIImageView *imageView = [[UIImageView alloc] initWithFrame:self.bounds]; + + [self insertSubview:imageView atIndex:0]; + + _backgroundImageView = imageView; + } + return _backgroundImageView; +} + +- (void)setBackgroundImage:(UIImage *)backgroundImage { + _backgroundImage = backgroundImage; + if (backgroundImage) { + self.backgroundImageView.image = backgroundImage; + } +} + +- (NSMutableArray *)titleViews +{ + if (_titleViews == nil) { + _titleViews = [NSMutableArray array]; + } + return _titleViews; +} + +- (NSMutableArray *)titleWidths +{ + if (_titleWidths == nil) { + _titleWidths = [NSMutableArray array]; + } + return _titleWidths; +} + +- (NSArray *)deltaRGB { + if (_deltaRGB == nil) { + NSArray *normalColorRgb = self.normalColorRgb; + NSArray *selectedColorRgb = self.selectedColorRgb; + + NSArray *delta; + if (normalColorRgb && selectedColorRgb) { + CGFloat deltaR = [normalColorRgb[0] floatValue] - [selectedColorRgb[0] floatValue]; + CGFloat deltaG = [normalColorRgb[1] floatValue] - [selectedColorRgb[1] floatValue]; + CGFloat deltaB = [normalColorRgb[2] floatValue] - [selectedColorRgb[2] floatValue]; + delta = [NSArray arrayWithObjects:@(deltaR), @(deltaG), @(deltaB), nil]; + _deltaRGB = delta; + + } + } + return _deltaRGB; +} + +- (NSArray *)normalColorRgb { + if (!_normalColorRgb) { + NSArray *normalColorRgb = [self getColorRgb:self.segmentStyle.normalTitleColor]; + NSAssert(normalColorRgb, @"������������������������������������ ���������RGB������������������"); + _normalColorRgb = normalColorRgb; + + } + return _normalColorRgb; +} + +- (NSArray *)selectedColorRgb { + if (!_selectedColorRgb) { + NSArray *selectedColorRgb = [self getColorRgb:self.segmentStyle.selectedTitleColor]; + NSAssert(selectedColorRgb, @"������������������������������������ ���������RGB������������������"); + _selectedColorRgb = selectedColorRgb; + + } + return _selectedColorRgb; +} + +- (NSArray *)getColorRgb:(UIColor *)color { + CGFloat numOfcomponents = CGColorGetNumberOfComponents(color.CGColor); + NSArray *rgbComponents; + if (numOfcomponents == 4) { + const CGFloat *components = CGColorGetComponents(color.CGColor); + rgbComponents = [NSArray arrayWithObjects:@(components[0]), @(components[1]), @(components[2]), nil]; + } + return rgbComponents; + +} + + +@end + + -- Gitblit v1.8.0