模糊效果,下拉放大

上一篇说了如何将navigationBar隐藏,本篇讲怎么才能让头部模糊
iOS8以后系统给我们提供了模糊效果UIVisualEffectView和UIBlurEffect

UIBlurEffect *beffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight];
UIVisualEffectView *effectView = [[UIVisualEffectView alloc] initWithEffect:beffect];
effectView.frame = self.tableViewHeaderImageView.frame;
[self.WTableView.tableHeaderView addSubview:effectView];

iOS7以前怎么做呢,我们使用第三方JCRBlurView

JCRBlurView *blurView = [[JCRBlurView alloc] init];
blurView.frame = self.tableViewHeaderImageView.frame;
[blurView setAutoresizingMask:UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight];
[self.WTableView.tableHeaderView addSubview:blurView];

模糊效果实现了,那下拉放大呢
我们通常会给给Tableview设置一个tableHeaderView

UIView *tableHeaderView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, WScreenWidth, 225)];
    self.WTableView.tableHeaderView = tableHeaderView;

然后在上面放一个ImageView

self.tableViewHeaderImageView = [[UIImageView alloc] init];
self.tableViewHeaderImageView.frame = tableHeaderView.bounds;
self.tableViewHeaderImageView.image = [UIImage imageWithColor:[UIColor blueColor]];
[tableHeaderView addSubview:self.tableViewHeaderImageView];

准备工作已经做好,接下来你只需要给Tableview设置一个代理,实现下面代理方法就好了,然后改变上面的视图的frame,就能实现下拉放大的效果了

#pragma mark --- uiscrollViewdelegate
- (void)scrollViewDidScroll:(UIScrollView *)scrollView
{
    if (self.WTableView.contentOffset.y < 0) {
        
        if ([[WXHelp getPhoneVersion] floatValue] >= 8.0) {
            
            self.effectView.frame = CGRectMake(0, self.WTableView.contentOffset.y, WScreenWidth, self.WTableView.tableHeaderView.frame.size.height - self.WTableView.contentOffset.y);
            
        } else {
            
            self.blurView.frame = CGRectMake(0, self.WTableView.contentOffset.y, WScreenWidth, self.WTableView.tableHeaderView.frame.size.height - self.WTableView.contentOffset.y);
            
        }
        
        self.tableViewHeaderImageView.frame = CGRectMake(-(WScreenWidth * (self.WTableView.tableHeaderView.frame.size.height - self.WTableView.contentOffset.y) / self.WTableView.tableHeaderView.frame.size.height - WScreenWidth) / 2, self.WTableView.contentOffset.y, WScreenWidth * (self.WTableView.tableHeaderView.frame.size.height - self.WTableView.contentOffset.y) / self.WTableView.tableHeaderView.frame.size.height, self.WTableView.tableHeaderView.frame.size.height - self.WTableView.contentOffset.y);
        
    }
}```

你可能感兴趣的:(模糊效果,下拉放大)