
登录后第一个界面,首页导航栏是透明的,随着 view 上滑, View 中的一个按钮也移动到导航栏上,导航栏也变得不透明了,请问这个是如何实现的,主要是按钮也随着移动而缩小,最后到导航栏上。
http://ww3.sinaimg.cn/large/721c0e13jw1evw6516sccg20hs0vkb29.gif
第二个就是向下滑动的时候,出现的图片依次缩小再放大,如果滑动快有这个效果,慢慢划动无此效果,请问这个又是如何实现的,求指导啊
http://ww1.sinaimg.cn/large/721c0e13jw1evw65iaog4g20hs0vk4nc.gif
1 iamjjh OP 求指导啊 |
2 CDuXZMAPgHp1q9ew 2015-09-09 15:29:32 +08:00 那个导航栏估计不是系统自带的 要是系统自带的话 那个按钮在层级上就要在导航栏之上 |
3 iOSSer 2015-09-09 15:43:05 +08:00 应该不是系统的 nav,是 view |
5 NovemberEleven 2015-09-09 16:08:15 +08:00 第一个我想到的是,移动的时候改变 navigationbar 的透明度,再再 navigationcontroller.view 里面加一个大的加号, scrollview 滚动的时候,移动缩放加号,当位置去到 navigationbar 中间的时候,把 navigationbar 的加号显示,再把移动的加号隐藏。 |
6 NovemberEleven 2015-09-09 16:09:28 +08:00 另外楼主用什么录屏工具? |
7 ahu 2015-09-09 16:14:03 +08:00 豌豆荚 android 版我记得就是这样的 |
8 yellowV2ex 2015-09-09 16:19:45 +08:00 1. 应该是看上去像导航条的 uiview 而已,目测这样实现最简单了,保持在上方不动可以写在 `scrollViewDidScroll` 里 2. tableview 有个叫 `willDisplayCell` 的,可以在这里面写 cell 出来时的动画 其实你看到的这些效果,有一万种实现方法,不一定完全按照教科书的方式去做,按照自己的编码习惯,熟悉的 API 和自己的水平去自己感受,慢慢写出来。其实就算别人实现了,你把代码复制过去,自己不理解的话,这样虽然东西是做出来了,但自己完全没有进步,下次叫你做个一样的效果,你只能找回之前的代码复制过去,那么你做过的东西真的就会了吗? 没关系的,自己慢慢摸索,慢慢进步,不要虚不要燥,争取在初学阶段,打下一些真正的基础。 |
9 iamjjh OP @NovemberEleven 用的 itools 录的视频,然后转的 gif |
10 iamjjh OP @yellowV2ex 多谢指导 |
11 holy_sin 2015-09-09 16:29:15 +08:00 太炫酷了 |
12 iamjjh OP @yellowV2ex 这个控制器的结构是一个 scrollView ,最上方一个 View (导航条),按钮那部分整个是个 View ,然后下面的是 tableView 吗?用 tableview 的 headerView 和 SectionHeader 代替上部和中键的 View 实现起来是否回简单点? |
13 CareiOS 2015-09-09 16:35:17 +08:00 App 叫什么名字?我也下来研究一下。 |
14 joying 2015-09-09 16:36:41 +08:00 用 ScrollView 的委托事件,监测 ScrollView 的 contentOffset ,随着 contentOffset.y 的变化,改变 Button 的 transform , NavigationBar 应该是自定义的,层级 index 小于 Button 的。 |
15 yellowV2ex 2015-09-09 16:42:10 +08:00 @iamjjh tableview 其实也是个 scrollView ,这种列表的东西还是 tableview 比较好,因为帮你写了很多 cell 重用的东西,最上面那部分可以用 headerView ,但那个加号肯定是所有东西的最上层的,如果要平滑过渡到那个顶部区域的话,还是独立浮着比较好,当然你要说包括加号和上面的所有东西都放到一个很高的 SectionHeader 里也不是不行,完全按照这个范例的话也是可以实现的。 但以后如果下面的 tableview 要加些分类啊什么的就比较麻烦了,按照这个 UI 的设计逻辑,顶部应该是一个独立 view 做独立的控制,而不应该跟下面的 tableview 混在一起。 // 你可以在 UITableViewController 里写一个 [self.view bringSubviewToFront:topView]; 然后在 - (void )scrollViewDidScroll:(UIScrollView *)scrollView 里写 topView.top = scrollView.contentOffset.y; 这样 topView 就会保持在上面了,然后根据滑动的 contentOffset.y 再来变这个 view 里的东西 |
16 yellowV2ex 2015-09-09 16:44:19 +08:00 纠正一下,[self.view bringSubviewToFront:topView]; 换 [self.view addSubview:topView]; |
17 finab 2015-09-09 16:46:30 +08:00 用 Reveal 看下他的页面结构。。 我经常用这个看 国内大的 APP 的结构偷师。。 |
18 ianisme 2015-09-09 17:07:32 +08:00 https://github.com/ianisme/CoolNavi 我的开源项目 不谢 |
19 hinate 2015-09-09 17:16:55 +08:00 via Android 楼上原著已出现 |
20 lk920724 2015-09-09 17:19:56 +08:00 scrollView 的偏移 = = |
24 Madeline 2015-09-09 17:34:13 +08:00 之前实现过,根据 scrollview 的 offset 换算成 nav bar 背景图的 alpha 。 |
26 ieliwb 2015-09-09 17:34:46 +08:00 华而不实的效果 |
29 codecrash 2015-09-09 20:23:01 +08:00 世界真小 |
30 qq2511296 2015-09-09 22:40:02 +08:00 另外简书的 app 里面个人中心 跟这个页面差不多 |
32 iamjjh OP @yellowV2ex 感谢指导 |
35 zichen0422 2015-09-10 10:33:43 +08:00 学习了. |
38 kobe1941 2015-09-10 13:25:34 +08:00 |
39 iOSSer 2015-09-10 14:59:34 +08:00 把头像加在 window 上,然后通过 scrollview 的偏移量去控制头像位置和导航栏透明度~ |
42 CareiOS 2015-09-11 13:03:21 +08:00 @iamjjh 他的思路是,将头像那个 UIImageView 放到 UIWindow 上,而 UINavigationController 的 view 与 UIImageView 是兄弟关系。 所以不会相互影响。 |
44 CareiOS 2015-09-11 13:22:26 +08:00 @iamjjh 这儿有一个开源的两个图标不会影响。 你可以看看 https://github.com/ondev/LTNavigationBar |
48 Elethom 2015-09-12 11:53:46 +08:00 @ianisme 比如 scroll view 用了 strong 而不是 weak 之的,具怎看。 思路上的主要有。第一是 navigation bar 不藏,而是置成透明且自己做一全局的 background 代替,就不影到和 navigation bar 相的 transitions ;第二是 header 本身的,你子遇到一特殊一的 frame 就不行了,包括收到、後台航等情 status bar 的 frame 化,以及屏幕旋,或者是在一 container frame 生改的候,都跪。另外我很喜做似,但自己很不意的另一原因,就是 iOS 7 和 iOS 8 多 affine transform 加的理有是不同的,要判版本,很。 直接了可能不太好,不你的代值得考的地方都基本有。就。 |