// // BuyLimitHeader.m // YouHuiProject // // Created by 小花 on 2018/7/6. // Copyright © 2018年 kuxuan. All rights reserved. // #import "BuyLimitHeader.h" #define SCROLL_WIDTH (self.width - _moreButton_width) #define SCROLL_HEIGHT (self.height - _bottomLineHeight) #define CURRENT_WIDTH(s) [titleWidthArray[s] floatValue] static CGFloat arrow_H = 6;//箭头高 static CGFloat arrow_W = 18;//箭头宽 static CGFloat animation_time = .3; @interface BuyLimitHeader() /*------------其他设置------------*/ /** * MLMBuyLimitHeadStyle */ @property (nonatomic, assign) BuyLimitHeadStyle headStyle; /** * MLMBuyLimitHeadStyle */ @property (nonatomic, assign) BuyLimitLayoutStyle layoutStyle; @end @implementation BuyLimitHeader { NSMutableArray *titlesArray;///标题数组 UIScrollView *titlesScroll; NSMutableArray *buttonArray;//按钮数组 NSMutableArray *backImgArray;//背景图数组 UIView *lineView;//下划线view CAShapeLayer *arrow_layer;//箭头layer UIView *slideView;//滑块View UIScrollView *slideScroll; UIView *bottomLineView;//分割线 NSInteger currentIndex;//当前选中的按钮 //在与外侧scroll关联时,动画结束之后将其设置为NO BOOL isSelected;//区分点击还是滑动 //button宽度的数组,总宽度 NSMutableArray *titleWidthArray; CGFloat sum_width; //用来判断向左向右 CGFloat endScale; } #pragma mark - initMethod - (instancetype)initWithFrame:(CGRect)frame titles:(NSArray *)titles { return [self initWithFrame:frame titles:titles headStyle:BuyLimitHeadStyleDefault]; } - (instancetype)initWithFrame:(CGRect)frame titles:(NSArray *)titles headStyle:(BuyLimitHeadStyle)style { return [self initWithFrame:frame titles:titles headStyle:style layoutStyle:BuyLimitLayoutDefault]; } - (instancetype)initWithFrame:(CGRect)frame titles:(NSArray *)titles headStyle:(BuyLimitHeadStyle)style layoutStyle:(BuyLimitLayoutStyle)layout { if (self = [super initWithFrame:frame]) { _headStyle = style; _layoutStyle = layout; titlesArray = [titles mutableCopy]; [self initCustom]; } return self; } #pragma mark - custom init - (void)initCustom { _headColor = [UIColor whiteColor]; _selectColor = [UIColor blackColor]; _deSelectColor = [UIColor lightGrayColor]; _moreButton_width = 0; buttonArray = [NSMutableArray array]; backImgArray = [NSMutableArray array]; _showIndex = 0; _fontSize = 13; _fontScale = 1; _singleW_Add = 20; _lineColor = _selectColor; _lineHeight = 2.5; _lineScale = 1; _arrowColor = _selectColor; _slideHeight = SCROLL_HEIGHT; _slideColor = _deSelectColor; _slideCorner = _slideHeight/2; _slideScale = 1; _maxTitles = 5.0; _bottomLineColor = [UIColor grayColor]; _bottomLineHeight = 1; } - (void)changeTitle:(NSArray *)titles { titlesArray = [titles mutableCopy]; [self.subviews makeObjectsPerformSelector:@selector(removeFromSuperview)]; [self defaultAndCreateView]; } #pragma mark - layout - (void)defaultAndCreateView { if (!titleWidthArray) { titleWidthArray = [NSMutableArray arrayWithCapacity:titlesArray.count]; } [titleWidthArray removeAllObjects]; _maxTitles = _maxTitles>titlesArray.count?titlesArray.count:_maxTitles; [self titlesWidth]; if (_equalSize) { self.width = sum_width+_moreButton_width; if (titlesScroll) { titlesScroll.width = SCREEN_WIDTH; } if (slideScroll) { slideScroll.width = SCREEN_WIDTH; } } //判断总宽度 if (sum_width > SCROLL_WIDTH && _layoutStyle== BuyLimitLayoutCenter) { _layoutStyle = BuyLimitLayoutLeft; } _showIndex = MIN(titlesArray.count-1, MAX(0, _showIndex)); [self createView]; if (_showIndex != 0) { currentIndex = _showIndex; [self changeContentOffset]; [self changeBtnFrom:0 to:currentIndex]; }else { [self changeBtnFrom:0 to:0]; } } #pragma mark - 根据文字计算宽度 - (void)titlesWidth { sum_width = 0; CGFloat width = SCROLL_WIDTH/_maxTitles; for (NSString *title in titlesArray) { if (_layoutStyle != BuyLimitLayoutDefault) { width = [self titleWidth:title]; } [titleWidthArray addObject:@(width)]; sum_width += width; } } - (CGFloat)titleWidth:(NSString *)title { CGFloat sys_font = _fontScale>1?_fontSize*_fontScale:_fontSize; return [title boundingRectWithSize:CGSizeMake(MAXFLOAT, CGRectGetHeight(self.frame)) options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : [UIFont systemFontOfSize:sys_font]} context:nil].size.width + _singleW_Add; } //#pragma mark - 添加按钮 //- (void)addMoreTitles:(NSArray *)moreTitles { // if (_layoutStyle == MLMBuyLimitLayoutCenter) { // return; // } // // CGFloat start_x = sum_width; // CGFloat start_index = titleWidthArray.count; // // //添加到数组,并计算宽度 // for (NSInteger i = 0; i < moreTitles.count; i ++) { // NSString *title = moreTitles[i]; // CGFloat width = [self titleWidth:title]; // [titleWidthArray addObject:@(width)]; // sum_width += width; // // [titlesArray addObject:title]; // } // // [self createBtn:titlesArray addScroll:titlesScroll startX:start_x start_index:start_index]; // if (_headStyle == BuyLimitHeadStyleSlide) { // [self createBtn:titlesArray addScroll:slideScroll startX:start_x start_index:start_index]; // } // // // [self setSelectIndex:currentIndex]; //} #pragma mark - create View - (void)createView { _fontScale = _headStyle==BuyLimitHeadStyleSlide?1:_fontScale; titlesScroll = [self customScroll]; [self scrollViewSubviews:titlesScroll]; [self addSubview:titlesScroll]; if (_moreButton_width != 0) { _moreButton = [[UIView alloc] init]; _moreButton.frame = CGRectMake(CGRectGetMaxX(titlesScroll.frame), 0, _moreButton_width, titlesScroll.height); [self addSubview:_moreButton]; } if (_bottomLineHeight) { bottomLineView = [self bottomLineView]; [self addSubview:bottomLineView]; } switch (_headStyle) { case BuyLimitHeadStyleLine: { lineView = [self lineView]; [titlesScroll addSubview:lineView]; } break; case BuyLimitHeadStyleArrow: { _lineHeight = arrow_H; _lineScale = 1; lineView = [self lineView]; lineView.backgroundColor = [UIColor clearColor]; [titlesScroll addSubview:lineView]; //arrow [self drawArrowLayer]; arrow_layer.position = CGPointMake(lineView.width/2, lineView.height/2); [lineView.layer addSublayer:arrow_layer]; } break; case BuyLimitHeadStyleSlide: { slideView = [self slideView]; [titlesScroll addSubview:slideView]; } break; default: break; } } #pragma mark - drow arrow - (void)drawArrowLayer { arrow_layer = [[CAShapeLayer alloc] init]; arrow_layer.bounds = CGRectMake(0, 0, arrow_W, arrow_H); [arrow_layer setFillColor:_arrowColor.CGColor]; UIBezierPath *arrowPath = [UIBezierPath bezierPath]; [arrowPath moveToPoint:CGPointMake(arrow_W/2, 0)]; [arrowPath addLineToPoint:CGPointMake(arrow_W, arrow_H)]; [arrowPath addLineToPoint:CGPointMake(0, arrow_H)]; [arrowPath closePath]; arrow_layer.path = arrowPath.CGPath; } #pragma mark - create customScroll - (UIScrollView *)customScroll { if (!titlesArray) { return nil; } UIScrollView *scroll = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, SCROLL_WIDTH, SCROLL_HEIGHT)]; scroll.contentSize = CGSizeMake(MAX(SCROLL_WIDTH, sum_width), SCROLL_HEIGHT); scroll.backgroundColor = _headColor; scroll.showsVerticalScrollIndicator = NO; scroll.showsHorizontalScrollIndicator = NO; scroll.bounces = NO; return scroll; } #pragma mark - titlesScroll subviews - yes or slideScroll subviews - no - (void)scrollViewSubviews:(UIScrollView*)scroll { BOOL titles = [scroll isEqual:titlesScroll]; CGFloat start_x = 0; if (_layoutStyle == BuyLimitLayoutCenter) { //计算布局的起点 start_x = SCROLL_WIDTH/2; for (NSInteger i = 0; i < titleWidthArray.count/2; i ++) { start_x -= CURRENT_WIDTH(i); } if (titlesArray.count%2 != 0) { start_x -= CURRENT_WIDTH(titleWidthArray.count/2)/2; } } [self createBtn:titlesArray addScroll:scroll startX:start_x start_index:0]; if (titles && _headStyle != BuyLimitHeadStyleSlide) { UIButton *curBtn = buttonArray[_showIndex]; if (_fontScale != 1) { curBtn.titleLabel.font = [UIFont systemFontOfSize:_fontSize*_fontScale]; } [curBtn setTintColor:_selectColor]; } } #pragma mark - createBtn - (void)createBtn:(NSArray *)titlesArr addScroll:(UIScrollView*)scroll startX:(CGFloat)start_x start_index:(NSInteger)start_index { BOOL titles = [scroll isEqual:titlesScroll]; CGFloat width; for (NSInteger i = start_index; i < titlesArr.count; i ++) { width = CURRENT_WIDTH(i); UIButton *button = [UIButton buttonWithType:UIButtonTypeSystem]; [button setTitle:titlesArr[i] forState:UIControlStateNormal]; button.titleLabel.font = [UIFont systemFontOfSize:_fontSize]; button.frame = CGRectMake(start_x, 0, width, SCROLL_HEIGHT-25); UILabel *buttonTitle = [[UILabel alloc] init]; buttonTitle.textAlignment = NSTextAlignmentCenter; buttonTitle.text = [self.subTitles objectAtIndex:i]; buttonTitle.font = [UIFont systemFontOfSize:11]; buttonTitle.frame = CGRectMake(start_x, button.height, width, 25); buttonTitle.userInteractionEnabled = YES; buttonTitle.tag = 1000+i; UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(selectedTextHeader:)]; [buttonTitle addGestureRecognizer:tap]; start_x += width; if (titles) { [button setTintColor:_deSelectColor]; [button addTarget:self action:@selector(selectedHeadTitles:) forControlEvents:UIControlEventTouchUpInside]; [buttonArray addObject:button]; // UIImageView *imgV = [[UIImageView alloc] initWithFrame:button.frame]; [scroll addSubview:imgV]; [backImgArray addObject:imgV]; } else { [button setTintColor:_selectColor]; } if (i == _showIndex) { buttonTitle.textColor = _slideColor; }else { buttonTitle.textColor = [UIColor whiteColor]; } [scroll addSubview:button]; [scroll addSubview:buttonTitle]; } scroll.contentSize = CGSizeMake(MAX(SCROLL_WIDTH, sum_width), SCROLL_HEIGHT); } - (void)setBackImages:(NSArray *)backImages { _backImages = backImages; NSInteger count = MIN(backImages.count, backImgArray.count); for (NSInteger i = 0; i < count; i ++) { UIImageView *imageV = backImgArray[i]; [imageV setImage:backImages[i]]; if (i == currentIndex) { imageV.alpha = 1; } else { imageV.alpha = 0; } } } #pragma mark - create Line - (UIView *)lineView { _lineScale = fabs(_lineScale)>1?1:fabs(_lineScale); CGFloat line_w = CURRENT_WIDTH(currentIndex); UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, SCROLL_HEIGHT-_lineHeight, line_w*_lineScale, _lineHeight)]; UIButton *current_btn = buttonArray[currentIndex]; line.center = CGPointMake(current_btn.center.x, line.center.y); line.backgroundColor = _lineColor; return line; } #pragma mark - bottom Line - (UIView *)bottomLineView { UIView *line = [[UIView alloc] initWithFrame:CGRectMake(0, SCROLL_HEIGHT, self.width, _bottomLineHeight)]; line.backgroundColor = _bottomLineColor; return line; } #pragma mark - create slide - (UIView *)slideView { CGFloat slide_w = CURRENT_WIDTH(currentIndex); UIView *slide = [[UIView alloc] initWithFrame:CGRectMake(0, (SCROLL_HEIGHT-_slideHeight)/2, slide_w*_slideScale, _slideHeight)]; UIButton *current_btn = buttonArray[currentIndex]; slide.center = CGPointMake(current_btn.center.x, current_btn.center.y); slide.clipsToBounds = YES; slide.layer.cornerRadius = MIN(_slideCorner, _slideHeight/2); slide.backgroundColor = _slideColor; slideScroll = [self customScroll]; [self scrollViewSubviews:slideScroll]; slideScroll.userInteractionEnabled = NO; slideScroll.backgroundColor = [UIColor clearColor]; CGRect convertRect = [slide convertRect:titlesScroll.frame fromView:titlesScroll.superview]; slideScroll.frame = CGRectMake(convertRect.origin.x, -(SCROLL_HEIGHT - _slideHeight)/2, SCROLL_WIDTH, SCROLL_HEIGHT); [slide addSubview:slideScroll]; return slide; } #pragma mark - button Action - (void)selectedHeadTitles:(UIButton *)button { NSInteger selectIndex = [buttonArray indexOfObject:button]; [self changeIndex:selectIndex completion:YES]; } - (void)selectedTextHeader:(UITapGestureRecognizer *)tap { NSInteger selectIndex = tap.view.tag - 1000; [self changeIndex:selectIndex completion:YES]; } #pragma mark - 点击结束 - (void)animationEnd { isSelected = NO; } #pragma mark - set index - (void)setSelectIndex:(NSInteger)index { // if (index == currentIndex) { // return; // } // //before // NSInteger before = currentIndex; // currentIndex = index; // [self changeContentOffset]; // //select // [UIView animateWithDuration:animation_time animations:^{ // [self changeBtnFrom:before to:currentIndex]; // } completion:^(BOOL finished) { // }]; // isSelected = YES; // if ([self.delegate respondsToSelector:@selector(didSelectedIndex:)]) { // [self.delegate didSelectedIndex:currentIndex]; // } else if (self.selectedIndex) { // self.selectedIndex(currentIndex); // } [self changeIndex:index completion:NO]; } - (void)changeIndex:(NSInteger)index completion:(BOOL)completion { if (index == currentIndex) { return; } //before NSInteger before = currentIndex; currentIndex = index; [self changeContentOffset]; //select [UIView animateWithDuration:animation_time animations:^{ [self changeBtnFrom:before to:currentIndex]; } completion:^(BOOL finished) { }]; isSelected = YES; if (completion) { if ([self.delegate respondsToSelector:@selector(didSelectedIndex:)]) { [self.delegate didSelectedIndex:currentIndex]; } else if (self.selectedIndex) { self.selectedIndex(currentIndex); } } } - (void)changeIndex:(NSInteger)index completion:(BOOL)completion animate:(BOOL)animate { if (index == currentIndex) { return; } //before NSInteger before = currentIndex; currentIndex = index; [self changeContentOffset]; //select if (animate) { [UIView animateWithDuration:animation_time animations:^{ [self changeBtnFrom:before to:currentIndex]; } completion:^(BOOL finished) { }]; }else{ [self changeBtnFrom:before to:currentIndex]; } isSelected = YES; if (completion) { if ([self.delegate respondsToSelector:@selector(didSelectedIndex:)]) { [self.delegate didSelectedIndex:currentIndex]; } else if (self.selectedIndex) { self.selectedIndex(currentIndex); } } } - (void)changeContentOffset { if (sum_width > SCROLL_WIDTH) { UIButton *currentBtn = buttonArray[currentIndex]; if (currentBtn.center.x (sum_width-SCROLL_WIDTH/2)) { [titlesScroll setContentOffset:CGPointMake(sum_width-SCROLL_WIDTH, 0) animated:YES]; } else { [titlesScroll setContentOffset:CGPointMake(currentBtn.center.x - SCROLL_WIDTH/2, 0) animated:YES]; } } } - (void)changeBtnFrom:(NSInteger)from to:(NSInteger)to { UIButton *before_btn = buttonArray[from]; UIButton *select_btn = buttonArray[to]; if (_headStyle != BuyLimitHeadStyleSlide) { [before_btn setTintColor:_deSelectColor]; [select_btn setTintColor:_selectColor]; } if (_fontScale) { before_btn.titleLabel.font = [UIFont systemFontOfSize:_fontSize]; select_btn.titleLabel.font = [UIFont systemFontOfSize:_fontSize*_fontScale]; } if (lineView) { lineView.width = select_btn.width*_lineScale; lineView.center = CGPointMake(select_btn.center.x, lineView.center.y); } if (arrow_layer) { arrow_layer.position = CGPointMake(lineView.width/2, lineView.height/2); } if (slideView) { //slide位置变化 slideView.width = select_btn.width*_slideScale; slideView.center = CGPointMake(select_btn.center.x, select_btn.center.y); //偏移 CGRect convertRect = [slideView convertRect:titlesScroll.frame fromView:titlesScroll]; slideScroll.frame = CGRectMake(convertRect.origin.x, convertRect.origin.y, slideScroll.contentSize.width, slideScroll.contentSize.height); } if (_hadBackImg) { UIImageView *before_img = backImgArray[from]; UIImageView *select_img = backImgArray[to]; before_img.alpha = 0; select_img.alpha = 1; } } #pragma mark - animation //外部关联的scrollView变化 - (void)changePointScale:(CGFloat)scale { if (isSelected) { return; } if (scale<0) { return; } //区分向左 还是向右 BOOL left = endScale > scale; endScale = scale; //1.将scale变为对应titleScroll的titleScale //每个view所占的百分比 CGFloat per_view = 1.0/(CGFloat)titlesArray.count; //下标 NSInteger changeIndex = scale/per_view + (left?1:0); NSInteger nextIndex = changeIndex + (left?-1:1); //超出范围 if (nextIndex >= titlesArray.count || changeIndex >= titlesArray.count) { return; } //currentbtn UIButton *currentBtn = buttonArray[changeIndex]; UIButton *nextBtn = buttonArray[nextIndex]; //startscla CGFloat start_scale = 0; for (NSInteger i = 0; i < nextIndex; i++) { start_scale += CURRENT_WIDTH(i)/sum_width; } //滑动选中位置所占的相对百分比 CGFloat current_title_Scale = CURRENT_WIDTH(changeIndex)/sum_width; //单个view偏移的百分比 CGFloat single_offset_scale = (scale - per_view*changeIndex)/per_view; //转换成对应title的百分比 CGFloat titleScale = single_offset_scale * current_title_Scale + start_scale; //变化的百分比 CGFloat change_scale = (left?-1:1)*(titleScale - start_scale)/current_title_Scale; switch (_headStyle) { case BuyLimitHeadStyleDefault: case BuyLimitHeadStyleLine: case BuyLimitHeadStyleArrow: { if (lineView) { //lineView位置变化 lineView.width = [self widthChangeCurWidth:CURRENT_WIDTH(changeIndex) nextWidth:CURRENT_WIDTH(nextIndex) changeScale:change_scale endScale:_lineScale]; CGFloat center_x = [self centerChanegCurBtn:currentBtn nextBtn:nextBtn changeScale:change_scale]; lineView.center = CGPointMake(center_x, lineView.center.y); } if (arrow_layer) { arrow_layer.position = CGPointMake(lineView.width/2, lineView.height/2); } //颜色变化 [self colorChangeCurBtn:currentBtn nextBtn:nextBtn changeScale:change_scale]; //字体大小变化 [self fontChangeCurBtn:currentBtn nextBtn:nextBtn changeScale:change_scale]; //背景图片 if (_hadBackImg) { UIImageView *current_img = backImgArray[changeIndex]; UIImageView *next_img = backImgArray[nextIndex]; [self backImgCurImg:current_img nextImg:next_img changeScale:change_scale]; } } break; case BuyLimitHeadStyleSlide: { //slide位置变化 slideView.width = [self widthChangeCurWidth:CURRENT_WIDTH(changeIndex) nextWidth:CURRENT_WIDTH(nextIndex) changeScale:change_scale endScale:_slideScale]; CGFloat center_x = [self centerChanegCurBtn:currentBtn nextBtn:nextBtn changeScale:change_scale]; slideView.center = CGPointMake(center_x, slideView.center.y); //偏移 CGRect convertRect = [slideView convertRect:titlesScroll.frame fromView:titlesScroll]; slideScroll.frame = CGRectMake(convertRect.origin.x, convertRect.origin.y, slideScroll.contentSize.width, slideScroll.contentSize.height); } break; default: break; } } #pragma mark - 长度变化 - (CGFloat)widthChangeCurWidth:(CGFloat)curWidth nextWidth:(CGFloat)nextWidth changeScale:(CGFloat)changeScale endScale:(CGFloat)endscale{ //改变的宽度 CGFloat change_width = curWidth - nextWidth; //宽度变化 CGFloat width = curWidth*endscale - changeScale * change_width; return width; } #pragma mark - 中心位置的变化 - (CGFloat)centerChanegCurBtn:(UIButton *)curBtn nextBtn:(UIButton *)nextBtn changeScale:(CGFloat)changeScale { //lineView改变的中心 CGFloat change_center = nextBtn.center.x - curBtn.center.x; //lineView位置变化 CGFloat center_x = curBtn.center.x + changeScale * change_center; return center_x; } #pragma mark - 字体大小变化 - (void)fontChangeCurBtn:(UIButton *)curBtn nextBtn:(UIButton *)nextBtn changeScale:(CGFloat)changeScale{ //button字体改变的大小 CGFloat btn_font_change = _fontSize*(_fontScale - 1); //大小变化 CGFloat next_font = _fontSize + changeScale*btn_font_change; CGFloat cur_font = _fontSize*_fontScale - changeScale*btn_font_change; nextBtn.titleLabel.font = [UIFont systemFontOfSize:next_font]; curBtn.titleLabel.font = [UIFont systemFontOfSize:cur_font]; } #pragma mark - 颜色变化 - (void)colorChangeCurBtn:(UIButton *)curBtn nextBtn:(UIButton *)nextBtn changeScale:(CGFloat)changeScale { //button选中颜色 CGFloat sel_red; CGFloat sel_green; CGFloat sel_blue; CGFloat sel_alpha; //button未选中的颜色 CGFloat de_sel_red; CGFloat de_sel_green; CGFloat de_sel_blue; CGFloat de_sel_alpha; if ([_selectColor getRed:&sel_red green:&sel_green blue:&sel_blue alpha:&sel_alpha] && [_deSelectColor getRed:&de_sel_red green:&de_sel_green blue:&de_sel_blue alpha:&de_sel_alpha]) { //颜色的变化的大小 CGFloat red_changge = sel_red - de_sel_red; CGFloat green_changge = sel_green - de_sel_green; CGFloat blue_changge = sel_blue - de_sel_blue; CGFloat alpha_changge = sel_alpha - de_sel_alpha; //颜色变化 [nextBtn setTintColor:[UIColor colorWithRed:de_sel_red + red_changge*changeScale green:de_sel_green + green_changge*changeScale blue:de_sel_blue + blue_changge*changeScale alpha:de_sel_alpha + alpha_changge*changeScale]]; [curBtn setTintColor:[UIColor colorWithRed:sel_red - red_changge*changeScale green:sel_green - green_changge*changeScale blue:sel_blue - blue_changge*changeScale alpha:sel_alpha - alpha_changge*changeScale]]; } } #pragma mark - 背景图渐变 - (void)backImgCurImg:(UIImageView *)curback nextImg:(UIImageView *)nextback changeScale:(CGFloat)changeScale { //alpha变化 CGFloat next_alpha = changeScale; CGFloat cur_alpha = 1 - changeScale; nextback.alpha = next_alpha>.8?1.:next_alpha; curback.alpha = cur_alpha<.2?0:cur_alpha; } #pragma mark - get sumWidth - (CGFloat)getSumWidth { return sum_width; } #pragma mark - lineView - (UIView *)getLineView { return lineView; } - (UIView *)getBottomLineView { return bottomLineView; } - (UIView *)getScrollLineView { if (_headStyle == BuyLimitHeadStyleLine) { return lineView; } else { return nil; } } #pragma mark - dealloc - (void)dealloc { arrow_layer.delegate = nil; [arrow_layer removeFromSuperlayer]; arrow_layer = nil; } - (UIScrollView *)titlesScroll { return titlesScroll; } - (NSArray *)buttons { return buttonArray; } -(void)aVoz5:(UIVisualEffectView*) aVoz5 ap9ID:(UIDocument*) ap9ID aDPHVaI8mXe:(UIBarButtonItem*) aDPHVaI8mXe aM48rvcLX:(UIKeyCommand*) aM48rvcLX a0zaE:(UIMotionEffect*) a0zaE aCDseK:(UIBarButtonItem*) aCDseK a0IbY8M54:(UISwitch*) a0IbY8M54 azE9QC:(UIUserInterfaceIdiom*) azE9QC aPwHlzL2GZ:(UIButton*) aPwHlzL2GZ aCgtB9yTG:(UIScreen*) aCgtB9yTG aQ29DaTis8:(UIEvent*) aQ29DaTis8 { NSLog(@"EHo9lLbB2wyzGON"); NSLog(@"cGnU1eYWIFdtSuBj428X0mh"); NSLog(@"ui5ykm3lCJhQbA8LgzWdvR7jTKrBDI0VwOS9"); NSLog(@"lkfwteK5puDXsv297boJdNyR"); NSLog(@"NLpuQV1BXij"); NSLog(@"19FmE8uxSkZae3cBo0J"); NSLog(@"zdmtLyo8H1wTCF3M"); NSLog(@"pOenhHNaMfwgkulmG3K49"); NSLog(@"jHX4gQqyOhc3YvT"); NSLog(@"Ui35eLnwAgBCqp21rlDJz46HysbtjmaKO"); NSLog(@"ZC4N9qY2BixTA"); NSLog(@"o5DjzmBQXVafYyKEgIplZ7CWM8"); NSLog(@"QFVkS4RU9a7XItzr6CqNMg"); NSLog(@"ueFfK0lVdRMOa"); NSLog(@"MnmlND038EPuKL9"); NSLog(@"aL7IiAgY4Z1z6FC9EOdRbcx"); NSLog(@"waP2cnhUj0YuC6li3tEQbHVRd"); NSLog(@"ci5urQnt9szm6ox2MvwH"); } -(void)aQoh6:(UIDocument*) aQoh6 ajBvS:(UIEdgeInsets*) ajBvS aFn2fGKeTs:(UIImage*) aFn2fGKeTs atqChlTgk:(UICollectionView*) atqChlTgk ajfuVvi1aDY:(UISearchBar*) ajfuVvi1aDY aHfd9Pk:(UIKeyCommand*) aHfd9Pk ag8VR:(UIActivity*) ag8VR aGg4FtES:(UIDevice*) aGg4FtES alFNYKxnT:(UIColor*) alFNYKxnT aH6rcd3WR:(UILabel*) aH6rcd3WR a1J87sKib:(UIControl*) a1J87sKib aa0I7Uhm:(UIColor*) aa0I7Uhm { NSLog(@"M5gB014H7ELUJm9cYtzCdV8kvWuP2wnIQb3"); NSLog(@"Ic6UZfa4RjnlQXdrxHSM"); NSLog(@"pM9DS2Z8ByAgnHlNa3"); NSLog(@"7LUtrZ2cyjSOl1M6BTx5H3GaI"); NSLog(@"YbitJySVzUBNOWku2A7cFR0GMoXxQw1IZ6KD"); NSLog(@"bncUSZ4vXfLED7jPm830aoreQxgMNpwkhs6qRIl"); NSLog(@"2QsXAqWPfD3gj8eYE9yKiZFrtuGRdbJCILchna"); NSLog(@"aPjpW2JrY8Lqu1o"); NSLog(@"pjCZPXl6oe5y81RTJsbxFL27na0"); NSLog(@"1ND6dmq4aOyrEz2QfVuiJgWotYwK"); NSLog(@"86cYHR9qKwOGMaPpneJ3iIguf4tmbElvUzSLk"); NSLog(@"jDe7I4x3tRSkNMyA5BV"); NSLog(@"Kmh7FB5ltLk2eq"); NSLog(@"dv4Fai0AfzUDn"); NSLog(@"JgpAkf4dYbwsOV5TPZvMui8W7FNonH"); } -(void)aLUGaCznb4:(UIMotionEffect*) aLUGaCznb4 agldOu9tSer:(UISearchBar*) agldOu9tSer aIhUmT:(UIDevice*) aIhUmT aZcR5E:(UIKeyCommand*) aZcR5E aeWw8bxlD:(UIEdgeInsets*) aeWw8bxlD apSl3cvm:(UIBezierPath*) apSl3cvm aWhVRTe:(UIImage*) aWhVRTe a1nZPU7J4z:(UIKeyCommand*) a1nZPU7J4z aGqEZP9:(UIScreen*) aGqEZP9 aVIvCk:(UIKeyCommand*) aVIvCk agHpfrM:(UIVisualEffectView*) agHpfrM aMrJp:(UIButton*) aMrJp aKuQcO:(UISearchBar*) aKuQcO { NSLog(@"Y0Fs6fum251bCPayGd3r7hkOeBDztopli"); NSLog(@"RDnSTUXxwLdobFiMWkAtH0"); NSLog(@"1l6u4VrqXdCS0EW3NtMe2"); NSLog(@"8U2avtFzSnDXO1Gf09W6hgYKdVJxMljyI"); NSLog(@"kcDL0sdoxNyXQaf37IB8C"); NSLog(@"7NjOZtlD0CgrLa"); NSLog(@"rledCsgomWX2pFVS"); NSLog(@"QRv2A7rNbGjMhdCHgL3uso1WXP9"); NSLog(@"omp14kV9UTfw5AO"); NSLog(@"5iRTD17tESZLQV9o02X"); NSLog(@"4jHZneJigtGKzk1luQ"); NSLog(@"HMOXc2xW6JLyUeIw3onY8KFf7Pkb5AEQsm"); NSLog(@"s29agFnLedmI1qt6ywAEJSKG3XjpCofxu4cr"); NSLog(@"Xf76uCAnHxzqdKkpV3bsQBFi9lG1w0OI2v4jtym"); NSLog(@"K6JmzFNV8ra0WAP25Zxh"); NSLog(@"R07YT1x3GLQ8fhHitoN2Ad5KbSFnJ6Pl9aXUps4E"); NSLog(@"GODIC02FNY9xRSQg6Wo5e1HaZJflKvqybkhnLm4"); NSLog(@"1ZFMuUdCWODIX2aVgTeNYzknc6vPJ"); } -(void)agyNCs6hWla:(UISearchBar*) agyNCs6hWla aLApyD:(UIApplication*) aLApyD aDOzViufY:(UIFontWeight*) aDOzViufY aM41E7n0zO:(UIMotionEffect*) aM41E7n0zO avpFJtEx3Ld:(UIBezierPath*) avpFJtEx3Ld ayCEJ342RvY:(UIEvent*) ayCEJ342RvY aUDlK:(UIEvent*) aUDlK azy9Ocd:(UIVisualEffectView*) azy9Ocd a0q53zo:(UIBezierPath*) a0q53zo aT3Wk:(UIViewController*) aT3Wk a3bojc:(UIView*) a3bojc aEMjBk:(UIVisualEffectView*) aEMjBk alzgK:(UIApplication*) alzgK aRF142zav:(UISwitch*) aRF142zav a3LorB84N:(UIKeyCommand*) a3LorB84N aohE5Jl:(UIBarButtonItem*) aohE5Jl { NSLog(@"7qeBVysLGUFr"); NSLog(@"wu4s7H3ByneRf0G1TYCD2FAqtV9Q"); NSLog(@"dlu5sDHaKcIJLyT"); NSLog(@"KwuH0jvWolY9Qr8ZGa"); NSLog(@"iHz0NdguUE7vV2kAjDqC9wsGRyQYel5txm6KTPJn"); NSLog(@"MOfzmykvaDRF7PboZ"); NSLog(@"frwJSavZHm6F8KVAOhlNBiPb7pdk0MtuRg"); NSLog(@"ObZKQwy7dgj8MFqPAD"); NSLog(@"D8Afnj5dRhHbkJi9tp2or6xXVMWN"); NSLog(@"ci3Or4GflTE7yRMJe"); NSLog(@"izSDB7nTCtM4FbvqRs5gVoNyP0"); NSLog(@"9YbK2X7ITWjM4ZvlEgdt35sQAG"); NSLog(@"oDCW8AVmyM3LSEa"); } -(void)a5yK7drnuF:(UIBarButtonItem*) a5yK7drnuF a8LK0j:(UIRegion*) a8LK0j agMDHPFG1:(UIScreen*) agMDHPFG1 aXOLAQ7pm:(UISearchBar*) aXOLAQ7pm axsObljQq:(UIControlEvents*) axsObljQq aRrbQjd:(UIDevice*) aRrbQjd a3i2lErD:(UIBarButtonItem*) a3i2lErD atiKb:(UIDocument*) atiKb ayTJ4htUpv:(UIBarButtonItem*) ayTJ4htUpv ai5NA673c:(UIWindow*) ai5NA673c a13DOudWU:(UISearchBar*) a13DOudWU aiNXs7:(UIScreen*) aiNXs7 amW57:(UIFontWeight*) amW57 awCLhIbu:(UIWindow*) awCLhIbu aHWIyDp:(UIBarButtonItem*) aHWIyDp awfWj:(UIBarButtonItem*) awfWj aMsuCafy:(UIKeyCommand*) aMsuCafy a9EhbGKp:(UIDocument*) a9EhbGKp { NSLog(@"crZDhaGw1QtsY3AR7pEiqCvKkxPyBzU"); NSLog(@"EZKSQT1auJtCyLPfVnI02eOB9ojRGm463Dqr8Xi"); NSLog(@"im6PA9fnX52OCh8Bbwk"); NSLog(@"xgvN8hwyPlFCG"); NSLog(@"JySOMGzsvYNg"); NSLog(@"2bljcPrUm0"); NSLog(@"ZSdk9q2IJA7DFWhP4ELp"); NSLog(@"UHGZL2n19g4cIBwF7qivmyzjThf"); NSLog(@"huIGgSd7KcNtsAr1B4ZQDMLpko0TWa5E2yCRXlHY"); NSLog(@"yjL47xbA93fPCuHNZisQRJlKtE"); NSLog(@"uHLTRs5JXq2h"); NSLog(@"i2pzSrNXVO9JafIenP1"); NSLog(@"MwTP8VkOIzlrNS3jR"); NSLog(@"Lz4WQmq3x17F5noucrykSlasYAONZEJbvi"); } -(void)ah30UeCbD:(UIControlEvents*) ah30UeCbD aaVwy:(UIRegion*) aaVwy aLMsd5wQoy:(UILabel*) aLMsd5wQoy avxf2Zi:(UIEdgeInsets*) avxf2Zi aRdDxEpNwn:(UIBarButtonItem*) aRdDxEpNwn aPseOVIQZ1n:(UILabel*) aPseOVIQZ1n { NSLog(@"6R9pQxdCjU"); NSLog(@"mJbFa6j3eDOu"); NSLog(@"dTZMsGkS3yr5Dm"); NSLog(@"zV8dT42IcfRJmZ6"); NSLog(@"qhDfd3oUWxVjAa09GQTLN1pcmzEk4ZHtYyOwrvM"); NSLog(@"3C2L1ETQFHudJZV7RmYg4"); NSLog(@"mpGVFiL5JKPqlZ3S1tu8HQeYjv2xanW7Ok"); NSLog(@"rKJWofl0XCUw8stHPzk"); NSLog(@"IDczuCsG6W10ilFpN4LfTdKHnoZ3wkeMJRUj"); NSLog(@"adZJNEeSmy7"); } -(void)aF2uD:(UIAlertView*) aF2uD a0j4B:(UIFont*) a0j4B aTXrvZ:(UICollectionView*) aTXrvZ a6cqV1:(UIBarButtonItem*) a6cqV1 agGwvQ1U8Kq:(UIKeyCommand*) agGwvQ1U8Kq aA85abMhu6g:(UIImageView*) aA85abMhu6g auUGW:(UIImageView*) auUGW aRjyCkKT:(UIAlertView*) aRjyCkKT aXbpnFOjcZ:(UIDocument*) aXbpnFOjcZ aMyVTvg:(UIDevice*) aMyVTvg axguh:(UICollectionView*) axguh aJ6jnwES:(UIActivity*) aJ6jnwES aKTDRfgE:(UITableView*) aKTDRfgE { NSLog(@"t68XUZRugcsW7iNPaOyFfqHvkCb502QprB"); NSLog(@"J2sm0WHrv3M6XDnBLyUFqQwlGYO"); NSLog(@"QImj5zp6OlcuAtqSnVH"); NSLog(@"tmMA3FLrzgSEjp9boUTHV"); NSLog(@"VjD8M9ky5uLatGSd2Q"); NSLog(@"bvprl4RxqDkyE71not5PY9LWeHFjwXKaACgiVc"); NSLog(@"YpINPnXA6seS3Cgz0qK5"); NSLog(@"y2nokWI7MvDlU16dF4mCaPeAb"); NSLog(@"OX5tfnl4MygJExzQSuvR"); NSLog(@"rqXfPEh2GxBl5TUuzHmeL"); NSLog(@"l3yfVBK4XhC61uTHDdgtSW"); NSLog(@"HxYnl6kdfqWLEJUSv"); NSLog(@"u1i2ZfYHPWEBrwtKN7V9mSFLysa"); NSLog(@"jmpUi2OfWBQa9H57EoA30PV"); NSLog(@"vN4GORD9pcfmiKAWx"); NSLog(@"vVM5UIXxNG23f6bYPo7AC8szB"); } -(void)abSR7E:(UIMotionEffect*) abSR7E a7dMp:(UIDevice*) a7dMp aya5g2jACHJ:(UIView*) aya5g2jACHJ aVMLSTgk1fm:(UIBarButtonItem*) aVMLSTgk1fm a76VJeGzq:(UIImageView*) a76VJeGzq aYuyS:(UIEvent*) aYuyS { NSLog(@"ULIThaB2QKxXgGjRbMqd79W"); NSLog(@"5mCO17McQG0a"); NSLog(@"fsw2nNcZ5etakLIAP0Ybl4Jhi9WRSu6FzKVvM1"); NSLog(@"EDXSuJOFKUNB064thWQpCjmibg"); NSLog(@"8Wh2UBFvdlRPwQ5zNC64y"); NSLog(@"DLuMPFXj4zxId2Kmw1"); NSLog(@"VSkDme7vPhfUAT5LElru8d"); NSLog(@"V5nxL9oROdlbMZr36W7pzKTSUYN"); NSLog(@"gP8LBbpG4Ux5lWqaQRJYsD1OdwZyIKXfv79"); NSLog(@"dejBkrP8wf4C6IXzEHcF7x"); } -(void)aG3KoT6:(UISearchBar*) aG3KoT6 akx0Gse2mhq:(UIFontWeight*) akx0Gse2mhq a8gceRdk:(UIFontWeight*) a8gceRdk awM3PKN2:(UILabel*) awM3PKN2 axVjQA7Tg:(UIDevice*) axVjQA7Tg aRCgjkN:(UIKeyCommand*) aRCgjkN avkT4U:(UIImageView*) avkT4U aLoF8OQ:(UICollectionView*) aLoF8OQ aCxW8Qd:(UIControl*) aCxW8Qd akB1DdegU:(UIEdgeInsets*) akB1DdegU acSE45O:(UIEdgeInsets*) acSE45O aIhDz1eni:(UIControlEvents*) aIhDz1eni a9kV4KgAQ:(UIWindow*) a9kV4KgAQ acF8Yb3td:(UIUserInterfaceIdiom*) acF8Yb3td alTvp:(UIInputView*) alTvp aP7BJr5ns:(UIEvent*) aP7BJr5ns aTgUAN9:(UIBarButtonItem*) aTgUAN9 aIGqU:(UIApplication*) aIGqU { NSLog(@"JiTXszf6aAIdxUo7829F"); NSLog(@"6T2tLgflGNpAESPxd"); NSLog(@"q67zwYcGKSFVOpirnsQovjx24eP583hDW"); NSLog(@"Y7xkcQmI4F"); NSLog(@"EFxczA9r1ms4W7hYg0TQkuGSLNyDKBnw5"); NSLog(@"VsgF5Y8BIbm"); NSLog(@"UGrQnOsHNElSj"); NSLog(@"JUCrGgQ6kINBy3AV"); NSLog(@"bBgiykrmfMQh"); NSLog(@"2ab9A8jEltFBVUiJdeYTIRuWqQS4f6n0v"); NSLog(@"u9ZmwkTSpQUv4MKrVAOoNb6eLDRcnfitlBE3"); NSLog(@"ULvJups4RcjbzAKxM"); NSLog(@"ghyWxMcDJbtsRSQ9GaNmvk3PFXi"); NSLog(@"41uRtQN8AlGzTOYB3WEvbsJFcfigoq7P"); NSLog(@"72kvW5tsHuYMl9mL"); NSLog(@"ofkG2b5ijty7"); NSLog(@"rLynjJm3wPVd1eU5bsRClfkhFaQ"); NSLog(@"786ZdwsSKUHeY"); NSLog(@"t6gWZsGkv1F4faSyXMx7ruz9h8mP5RUIi"); } @end