导航栏和页面融合的渐变色

来源:互联网 发布:淘宝商铺怎么开通花呗 编辑:程序博客网 时间:2024/04/26 00:14
- (void)scrollViewDidScroll:(UIScrollView *)scrollView {    if (scrollView == self.mainTableView) {//滚动距离判定        if (scrollView.contentOffset.y > 135) {            self.title = @"书籍详情";            [self changeStatusBarColorToDark:NO];            self.shareButton.selected = YES;            [self.navigationController.navigationBar setBackgroundImage:[UIImage imageNamed:@""]                                                          forBarMetrics:UIBarMetricsDefault];        }else {            self.title = @"";            self.shareButton.selected = NO;            [self changeStatusBarColorToDark:YES];            [self.navigationController.navigationBar setBackgroundImage:self.statusBarImage                                                          forBarMetrics:UIBarMetricsDefault];        }        if (scrollView.contentOffset.y > 0 && scrollView.contentOffset.y < 135) {            self.backgroundImg.frame = CGRectMake(0, -scrollView.contentOffset.y, SWIDTH, 135);        }    }}- (void)changeStatusBarColorToDark:(BOOL)dark {    [[NSNotificationCenter defaultCenter] postNotificationName:kChangeStatusBarColorNotificatonName                                                        object:nil                                                      userInfo:@{@"dark":@(dark)}];}//导航栏图片- (void)statusBarSetImage:(UIImage *)img {    UIImage *orgImage = [img applyBlurWithRadius:25 tintColor:[UIColor colorWithWhite:1 alpha:0.6] saturationDeltaFactor:1.8 maskImage:nil];    UIImage *clipImg = [orgImage clipWithImageRect:CGRectMake(100, 0, SWIDTH, 64)];    clipImg = [clipImg resizableImageWithCapInsets:UIEdgeInsetsZero resizingMode:UIImageResizingModeStretch];    dispatch_async(dispatch_get_main_queue(), ^{        [self.navigationController.navigationBar setBackgroundImage:clipImg                                                      forBarMetrics:UIBarMetricsDefault];        self.backgroundImg.image = [orgImage clipWithImageRect:CGRectMake(100, 64, SWIDTH, 135)];    });    self.statusBarImage = clipImg;}//渐变layer- (void)insertTransparentGradient {    UIColor *colorOne = [UIColor colorWithWhite:1.0 alpha:0.0];    UIColor *colormid = [UIColor colorWithWhite:1.0 alpha:0.1];    UIColor *colorTwo = [UIColor colorWithWhite:1.0 alpha:1.0];    NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor,colormid.CGColor, colorTwo.CGColor, nil];    NSNumber *stopOne = [NSNumber numberWithFloat:0.0];    NSNumber *stopMid = [NSNumber numberWithFloat:0.3];    NSNumber *stopTwo = [NSNumber numberWithFloat:1.0];    NSArray *locations = [NSArray arrayWithObjects:stopOne, stopMid, stopTwo, nil];    //crate gradient layer    CAGradientLayer *headerLayer = [CAGradientLayer layer];    headerLayer.colors = colors;    headerLayer.locations = locations;    headerLayer.frame = self.backgroundImg.bounds;    [self.backgroundImg.layer insertSublayer:headerLayer atIndex:0];}
原创粉丝点击