导航栏剖析图
这种方法确实可以做到可以使导航栏透明及没有那根线
[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上的改变
}
}
网友评论
_barImageView = self.navigationController.navigationBar.subviews.firstObject;
-(void)scrollViewDidScroll:(UIScrollView *)scrollView
{
CGFloat minAlphaOffset = -64;
CGFloat maxAlphaOffset = 64;
CGFloat offset = scrollView.contentOffset.y;
CGFloat alpha = (offset - minAlphaOffset) / (maxAlphaOffset - minAlphaOffset);
NSLog(@"滑动 - %f - %f",alpha,offset);
#if DEMO == 1
if (offset < -64 * 2) {
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleLightContent];
//标题颜色
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor whiteColor]};
//导航栏子控件颜色
self.navigationController.navigationBar.tintColor = [UIColor whiteColor];
}else{
[[UIApplication sharedApplication] setStatusBarStyle:UIStatusBarStyleDefault];
//标题颜色
self.navigationController.navigationBar.titleTextAttributes = @{NSForegroundColorAttributeName : [UIColor blackColor]};
//导航栏子控件颜色
self.navigationController.navigationBar.tintColor = [UIColor blackColor];
}
#endif
_barImageView.alpha = alpha;
}