iOS具有视觉间差效果、模糊效果的顶部视图
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了iOS具有视觉间差效果、模糊效果的顶部视图,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2145字,纯文字阅读大概需要4分钟。
内容图文
![iOS具有视觉间差效果、模糊效果的顶部视图](/upload/InfoBanner/zyjiaocheng/1075/f24b225b425e4a25a3ed925b4ed4d5ed.jpg)
附上我的demo源码:https://github.com/wqhiOS/WUParallaxView
先来看下效果:
利于AutoLayout可以很简单的完成这个视觉间差效果,这里默认大家的都已经掌握了AutoLayout。
第一步 首先把基本工作完成 新建一个项目 如下:并在viewController里放入tableView,
(可以用代码 也可以用storyBoard,我比较懒 所以就。。。)
给tableView添加约束,距离父视图顶部的距离,一定要为0,不能是64啊。。。如下图:
基本任务完成。下面的操作都很重要了。。。
大家一般做到这里都会有一个疑问,是把 顶部的头视图,和选项卡视图 作为tableView的headerView呢?还是作为控制器view的是子视图呢。。
如果要的效果仅仅是把头视图拉伸的效果,把顶部头视图作为tableView的headerView也是可以的,但是我们这里需要让tableView向上滑的时候选项卡可以悬停再导航栏下方,所以这个方案是不太可行的。
于是,我就决定把顶部的头视图 和选项卡 添加在视图控制器的view上面,(顶部头视图的图片,大家随便找一张放上去就行了)。。如下图所示:
放完之后,进行AutoLayout自动布局,需要注意的是!不管我们如何滑动tableView,选项卡的顶部是紧紧挨着顶部头视图的底部,所以这个约束不能少!如果还是不明白这些约束的,可以到我的demo里面自己去看一看。
这时候又会遇到一个问题,我们的tableView是占满了整个屏幕放置的,如果我现在把头视图和选项卡放在控制器的view上面,岂不是会遮挡住tableView的内容。
很重要的来了!因为tableView的内容需要显示到选项卡下面,因此设置内容的顶部间距为头部视图+选项卡视图高度,代码如下:
self.tableView.contentInset = UIEdgeInsetsMake(kHeadH + kBarH, 0, 0, 0);
搞到这里,我们运行一下项目,就会是这个效果,但是这个时候顶部头视图还是无法根据我们滑动的偏移量来改变
为了能够改变顶部头视图的高度。。我们可以在控制器中关联他的高度约束:
加上 约束后,我们就可以根据滑动的偏移量来改变顶部头视图的大小,为了使图片的宽度能搞随着高度的变化而变化,我们需要设置顶部头视图的mode属性为Aspect Fill:
之后设置tableView的代理。遵守UIScrollViewDelegate,实现下面的方法,使tableView在滑动的时候改变刚刚关联的高度约束的大小。
1 - (void)scrollViewDidScroll:(UIScrollView *)scrollView { 2 3//计算偏移量,默认是-289; 4 CGFloat beginOffsetY = -(kHeadH + kBarH); 5 CGFloat offsetY = scrollView.contentOffset.y - beginOffsetY; 6 7//向下拉: offsetY为负值,并且越来越小 这时图片高度需要变大 8//向上拉: offsetY为正值,并且越来越大,这是图片高度需要变小 910//所以11 CGFloat height = kHeadH - offsetY; 12//当向上拖动的时候,头视图会越来越小,为了让选项卡,能够停留在导航栏下方。需要设置图片的最小高度是64。13if (height < kHeadMinH) { 14 height = kHeadMinH; 15 } 1617 self.headViewHeight.constant = height; 181920// 设置导航条的透明度21 CGFloat alpha = offsetY / (kHeadH - kHeadMinH); 22if (alpha >=1) { 23 alpha = 1; 24 } 25 NSLog(@"%f",alpha); 26 self.navigationController.navigationBar.alpha = alpha; 27 self.visualEffectView.alpha = alpha; 28 }
为了能够使选择器悬在导航栏下方,我们要设置图片的高度,最小为64就可以了。。
注意:记得在viewDidLoad中加入下面这句代码,否则页面出来的时候,导航栏透明度是1而不是0
self.automaticallyAdjustsScrollViewInsets = YES;
在这个小例子中,我还使用了毛玻璃效果,在图片变小的时候,使其越来越模糊,用的是iOS8之后才有的UIVisualEffectView。。。但是有一个小问题就是我在模拟上运行的时候,可以看到模糊效果,但是在真机上测试的时候,根本看不到模糊效果,如果哪位知道可以告诉我哈。
原文:http://www.cnblogs.com/wuqh-iOS/p/4838954.html
内容总结
以上是互联网集市为您收集整理的iOS具有视觉间差效果、模糊效果的顶部视图全部内容,希望文章能够帮你解决iOS具有视觉间差效果、模糊效果的顶部视图所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。