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

效果图

导航栏剖析图

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

[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 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,267评论 4 61
  • 成长的最大阻碍是不去践行 践行的最大阻碍是不去思考 思考的最大阻碍是情绪化和惰怠 保持理性,客服本能 排除情绪的地...
  • 很早的时候疯狂英语第一篇有篇,背不出了,大意是people comes and goes,有些人和你度过一段时光,...
    8bc80694e065阅读 76评论 0 0
  • 越努力,越幸运 ”我不知道将去何方,但我已在路上“。时常能想起这句动画电影《千与千寻》的经典台词。《千与千寻》是日...
    我是东北仁儿阅读 6,889评论 2 2
  • 不是我爱哭,只是这些年来一直委曲求全无人知晓。 这二十年来,我都是个人对你们言听计从的孩子。小时候你常常说孝父母不...
    李冰凉i阅读 1,045评论 0 0