iOS 下拉上划导航栏变化处理详解 + 头视图放大

iOS 下拉上划导航栏变化处理详解 + 头视图放大_第1张图片
效果图

导航栏剖析图

iOS 下拉上划导航栏变化处理详解 + 头视图放大_第2张图片

这种方法确实可以做到可以使导航栏透明及没有那根线

[self.navigationController.navigationBar setBackgroundImage:[UIImage new] forBarMetrics:UIBarMetricsDefault]; self.navigationController.navigationBar.shadowImage = [UIImage new];

1)我们设置的是BackgroundImage,说明也许在我们的navigationBar上有一个ImageView的子视图,而我们的看到的导航栏实际上看到的就是这个图片,因此设置它为无图片我们就可以看到透明,而设置backgroundColor却不行。

2)我们还设置了shadowImage为无图,它其实就是导航栏下面的那根细线,如果你不写第二句话你则会看到一根线。

其实只需写这两句话就可以做到导航栏透明

_barImageView=self.navigationController.navigationBar.subviews.firstObject;

_barImageView.alpha = 0;

取出导航栏的背景,设置为透明即可。但是想做到下拉上划渐变的效果当然不可能只写这两句。

再根据代理方法计算出高度变化

-(void)scrollViewDidScroll:(UIScrollView*)scrollView{

CGFloatminAlphaOffset = -64;

CGFloatmaxAlphaOffset =64;

CGFloatoffset = scrollView.contentOffset.y;

CGFloatalpha = (offset - minAlphaOffset) / (maxAlphaOffset - minAlphaOffset);

NSLog(@"滑动- %f - %f",alpha,offset);

_barImageView.alpha= alpha;//导航栏透明度变化

0 — - >> 1  导航栏颜色变深

1 - - >> 0  导航栏颜色逐渐透明

}

!!!!!!!!!重点!!!!!!!!!

如果想在tableview下拉后,在底部有背景图有两种方法(类似于qq下拉后有又【由xx技术支持】、某个图片等等)

1:设置MineTableView.backgroundColor = [UIColor clearColor];背景透明,

再把图片直接加载在self.view上

2:或者直接把图片加载在MineTableView.backgroundView上。


下拉头视图放大

1.加载到_ZLTableView上

1)初始化TableView,如果需求是导航栏需要透明切上划透明度变化时,可以参照上面的方法。

2)_ZLTableView.contentInset = UIEdgeInsetsMake(200, 0, 0, 0);把cell的显示往下移动,给头部视图预留位置。

HeadIcon.contentMode = UIViewContentModeScaleAspectFill;设置图片的拉伸

下拉的时候,只需设置图片高度变化,宽度会根据拉伸自动变化。

2.直接加载在_ZLTableView.tableHeaderView上

_ZLTableView.tableHeaderView = 图片

视图放大的代码就在这里面实现

- (void)scrollViewDidScroll:(UIScrollView *)scrollView

{

放在tableview上的直接根据高度变化改变即可。

放在tableHeaderView上的改变


}

}


你可能感兴趣的:(iOS 下拉上划导航栏变化处理详解 + 头视图放大)