登录后第一个界面,首页导航栏是透明的,随着 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 疊加的處理有時是不同的,要判斷版本,很煩。 說直接了可能不太好聽,不過你的代碼值得參考的地方都基本沒有。就這樣。 |