导航栏渐变

#pragma mark -- 配置导航栏
- (void )configNavi{

self.navigationItem.leftBarButtonItem = nil;
UIButton *RightBtn = [[UIButton alloc]initWithFrame:CGRectMake(0, 0, 35, 35)];
[RightBtn setImage:[UIImage imageNamed:@"setup"] forState:UIControlStateNormal];
UIBarButtonItem *RightBarButton = [[UIBarButtonItem alloc] initWithCustomView:RightBtn];
[RightBtn addTarget:self action:@selector(setting) forControlEvents:UIControlEventTouchUpInside];
self.navigationItem.rightBarButtonItem = RightBarButton;

UIImageView *imgView =  [self findHairlineImageViewUnder:self.navigationController.navigationBar];
imgView.hidden = YES;
}
//通过一个方法来找到这个黑线(findHairlineImageViewUnder):
- (UIImageView *)findHairlineImageViewUnder:(UIView *)view {
if ([view isKindOfClass:UIImageView.class] && view.bounds.size.height <= 1.0) {
    return (UIImageView *)view;
}
for (UIView *subview in view.subviews) {
    UIImageView *imageView = [self findHairlineImageViewUnder:subview];
    if (imageView) {
        return imageView;
    }
}
return nil;
}
#pragma mark - UIScrollViewDelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
if ([scrollView isEqual:_aTableView]) {
    CGFloat offsetY = scrollView.contentOffset.y;
    if (offsetY>0) {
        CGFloat alpha = offsetY/64;
        self.navigationItem.title = @"我的";
        [self setNeedsNavigationBackground:alpha];
    } else {
        self.navigationItem.title = @"";
        [self setNeedsNavigationBackground:0.0];
    }
}
}
- (void)setNeedsNavigationBackground:(CGFloat)alpha {
// 导航栏背景透明度设置
UIView *barBackgroundView = [[self.navigationController.navigationBar subviews] objectAtIndex:0];// _UIBarBackground
UIImageView *backgroundImageView = [[barBackgroundView subviews] objectAtIndex:0];// UIImageView
if (self.navigationController.navigationBar.isTranslucent) {
    if (backgroundImageView != nil && backgroundImageView.image != nil) {
        barBackgroundView.alpha = alpha;
    } else {
        UIView *backgroundEffectView = [[barBackgroundView subviews] objectAtIndex:1];// UIVisualEffectView
        if (backgroundEffectView != nil) {
            backgroundEffectView.alpha = alpha;
        }
    }
} else {
    barBackgroundView.alpha = alpha;
}
}

你可能感兴趣的:(导航栏渐变)