BaseSlideScrollView

#pragma mark - 顶部滚动视图逻辑方法


/*!

 * @method 选中tab时间

 * @abstract

 * @discussion

 * @param 按钮

 * @result

 */

- (void)selectNameButton:(UIButton *)sender

{

    //如果点击的tab文字显示不全,调整滚动视图x坐标使用使tab文字显示全

    [self adjustScrollViewContentX:sender];

    

    //如果更换按钮

    if (sender.tag != _userSelectedChannelID) {

        //取之前的按钮

        UIButton *lastButton = (UIButton *)[_topScrollView viewWithTag:_userSelectedChannelID];

        lastButton.selected = NO;

        //赋值按钮ID

        _userSelectedChannelID = sender.tag;

    }

    

    //按钮选中状态

    if (!sender.selected) {

        sender.selected = YES;

        

        [UIView animateWithDuration:0.25 animations:^{

            

            [_shadowImageView setFrame:CGRectMake(sender.frame.origin.x, 0, sender.frame.size.width, _shadowImage.size.height)];

            

        } completion:^(BOOL finished) {

            if (finished) {

                //设置新页出现

                if (!_isRootScroll) {

                    [_rootScrollView setContentOffset:CGPointMake((sender.tag - 100)*self.bounds.size.width, 0) animated:YES];

                }

                _isRootScroll = NO;

                

                if (self.slideSwitchViewDelegate && [self.slideSwitchViewDelegate respondsToSelector:@selector(slideSwitchView:didselectTab:)]) {

                    [self.slideSwitchViewDelegate slideSwitchView:self didselectTab:_userSelectedChannelID - 100];

                }

            }

        }];

        

    }

    //重复点击选中按钮

    else {

        

    }

}


/*!

 * @method 调整顶部滚动视图x位置

 * @abstract

 * @discussion

 * @param

 * @result

 */

- (void)adjustScrollViewContentX:(UIButton *)sender

{

    //如果 当前显示的最后一个tab文字超出右边界

    if (sender.frame.origin.x - _topScrollView.contentOffset.x > self.bounds.size.width - (kWidthOfButtonMargin+sender.bounds.size.width)) {

        //向左滚动视图,显示完整tab文字

        [_topScrollView setContentOffset:CGPointMake(sender.frame.origin.x - (_topScrollView.bounds.size.width- (kWidthOfButtonMargin+sender.bounds.size.width)), 0animated:YES];

    }

    

    //如果 tab的文字坐标 - 当前滚动视图左边界所在整个视图的x坐标) < 按钮的隔间 ,代表tab文字已超出边界

    if (sender.frame.origin.x - _topScrollView.contentOffset.x < kWidthOfButtonMargin) {

        //向右滚动视图(tab文字的x坐标 - 按钮间隔 = 新的滚动视图左边界在整个视图的x坐标),使文字显示完整

        [_topScrollView setContentOffset:CGPointMake(sender.frame.origin.x - kWidthOfButtonMargin, 0 animated:YES];

    }

}



#pragma mark - 工具方法


/*!

 * @method 通过16进制计算颜色

 * @abstract

 * @discussion

 * @param 16机制

 * @result 颜色对象

 */

+ (UIColor *)colorFromHexRGB:(NSString *)inColorString

{

    UIColor *result = nil;

    unsigned int colorCode = 0;

    unsigned char redByte, greenByte, blueByte;

    

    if (nil != inColorString)

    {

        NSScanner *scanner = [NSScanner scannerWithString:inColorString];

        (void) [scanner scanHexInt:&colorCode]; // ignore error

    }

    redByte = (unsigned char) (colorCode >> 16);

    greenByte = (unsigned char) (colorCode >> 8);

    blueByte = (unsigned char) (colorCode); // masks off high bits

    result = [UIColor

              colorWithRed: (float)redByte / 0xff

              green: (float)greenByte/ 0xff

              blue: (float)blueByte / 0xff

              alpha:1.0];

    return result;

}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值