黄色部分的顶栏,下拉可以显示部分信息,上推的时候可以渐变消失,直到变成一个navigation controller的样式,同时ui的控件也会改变。
请问这个大概是如何实现的? 有思路就行。
拥有18年软件开发和IT教学经验。曾任多家上市公司技术总监、架构师、项目经理、高级软件工程师等职务。 网络人气名人讲师,...
這部分不是我做的,但我也來裝個 B。 首先 NavigationBar 有兩個,你看到的漸隱變化出現的不是同一個。知道這個基礎之後你應該會好理解更多東西。 View 的層級是這樣的:
<ParentViewController.View> | <Container> //UIView | | <SegmentView> | | <ScrollView> //仅左右滑动(pagingEnabled) | | | <ChildViewController1.View> | | | | <CategoryListView> | | | | <FoodListView> | | | <ChildViewController2.View> | | | | <RatingListView> | | | <ChildViewController3.View> | | | | <SummaryListView>
SegmentView 就是你看到的會改變的那個有商家 icon 的 view。 ScrollView 裡面有三個ViewController:「商品,評價,商家」。 接下來是比較難的部分了:如果既要商品的 tableview 要可滑動,且整個 scrollview 也要適合時宜地整體向上滑動,這個手勢是比較難控制的。你可以比對 美團 百度相應的介面,體驗是和餓了麼不一樣的,你應該能發現。 適合的時宜是什麼呢:scrollview 沒有整體到頂的時候 tableview 是不動的,到頂的時候 tableview 要接替 scrollview 的 scrollview 速度繼續滾動,否則就會頓一下導致體驗很差。
你所關心的頂部 segmentview 漸隱是透過 scrollview 的整體位置變化的,一個簡單的關係式而已。
隱藏在背後的,是 scrollview 和 tableview 的手勢和速度的銜接。 so,我們團隊的小夥伴對tableview 做了一點hack,關閉了原來自帶的手勢,用我們自定義的手勢去控制,同時用UIDynamic 去模擬tableview 滾動,最後讓tableview 在scrollview 整體到頂時銜接其加速度滾動。微調了一些參數做到了無縫銜接。 就是這樣。
(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;監測tableview的位置
這部分不是我做的,但我也來裝個 B。
首先 NavigationBar 有兩個,你看到的漸隱變化出現的不是同一個。知道這個基礎之後你應該會好理解更多東西。 View 的層級是這樣的:
SegmentView 就是你看到的會改變的那個有商家 icon 的 view。 ScrollView 裡面有三個ViewController:「商品,評價,商家」。
接下來是比較難的部分了:如果既要商品的 tableview 要可滑動,且整個 scrollview 也要適合時宜地整體向上滑動,這個手勢是比較難控制的。你可以比對 美團 百度相應的介面,體驗是和餓了麼不一樣的,你應該能發現。
適合的時宜是什麼呢:scrollview 沒有整體到頂的時候 tableview 是不動的,到頂的時候 tableview 要接替 scrollview 的 scrollview 速度繼續滾動,否則就會頓一下導致體驗很差。
隱藏在背後的,是 scrollview 和 tableview 的手勢和速度的銜接。 so,我們團隊的小夥伴對tableview 做了一點hack,關閉了原來自帶的手勢,用我們自定義的手勢去控制,同時用UIDynamic 去模擬tableview 滾動,最後讓tableview 在scrollview 整體到頂時銜接其加速度滾動。微調了一些參數做到了無縫銜接。
就是這樣。
(void)scrollViewWillBeginDragging:(UIScrollView *)scrollView;
監測tableview的位置