Skip to content

Commit

Permalink
small modify
Browse files Browse the repository at this point in the history
  • Loading branch information
CoderMikeHe committed Jul 29, 2020
1 parent b6c5705 commit 2b0c0d4
Showing 1 changed file with 0 additions and 21 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -340,27 +340,6 @@ - (void)scrollViewDidScroll:(UIScrollView *)scrollView{
self.lastOffsetY = offsetY;
}
/**
处于`小程序容器模块`的从`屏幕底部`上拉拖拽到`屏幕顶部`的过程,等效于 处于`微信首页模块`的`屏幕顶部`下拉拖拽到`屏幕底部`的过程的镜像。具体逻辑如下:
- 相同条件:scrollview.isDragging == YES(未松手);假设屏幕高度为 = 736;假设下拉为`正方向`,即产生的偏移量(`offset`)为`正数`;上拉为`负方向`,即产生的偏移量(`offset`)为`负数`;
- 下拉到屏幕底部的拖拽过程:`tableView.contentOffset.y` 从 `0` ==> `-736`;产生的偏移量(`offset0`)从`0` ==> `736`;传给各模块的偏移量(`offset1`)从`0` ==> `736`(即:`offset1 = offset0`),然后各模块监听偏移量(`offset1`)的变化,处理自身的逻辑和样式变化。
- 上拉到屏幕顶部的拖拽过程:`scrollView.contentOffset.y` 从 `0` ==> `736`;产生的偏移量(`offset0`)从`0` ==> `-736`。由于已处于上拉模块,证明各模块的偏移量(`offset1`)已处于下拉最大值:`736`,所以此时传给各模块的偏移量(`offset1`)从`736` ==> `0`(即:`offset1 = 736 - offset0`),然后各模块监听偏移量(`offset1`)的变化,处理自身的逻辑和样式变化
通俗理解:**默认情况下,我们手指从`scrollView`的顶部下拉一段距离,`scrollView`的内容会跟着偏移一段距离;一旦手指释放后,`scrollView`的内容会自动回弹到`scrollView`顶部。而这种松手自动回弹到顶部的过程,就等效于上面上拉到屏幕顶部的拖拽过程**
所以,处于`小程序容器模块`的从`屏幕底部`上拉拖拽到`屏幕顶部`的过程,涉及到`微信首页`模块的UI变化,这里笔者就不多逼逼了,大家逆推即可。
##### 小程序容器模块
上拉拖拽过程(未松手 Pulling 或 Idle )逻辑如下:
- 判断上拉状态(Pulling 或 Idle)。
- 蒙版的`alpha`从`0.6` ==> `0`;`云层模块`和`小程序模块`的`alpha`从`1.0` ==> `0`,以及`frame.origin.y`从`0` ==> `-736`。
- 回调`offset`和`state`给`微信首页`模块。
上拉拖拽过程(松手 Pulling => Refreshing )逻辑如下:
- 回调`offset`和`state`给`微信首页`模块,让其以及其子模块,动画过渡到下拉初始状态`Idle`
- 让`小程序容器`模块以及其子模块,动画过渡到下拉初始状态`Idle`。特别提醒:这里要分清`动画中`和`动画后`的逻辑处理:
+ 动画中:蒙版的`alpha`动画过渡到`0`;`云层模块`和`小程序模块`的`alpha` 动画过渡到 `0`,以及`frame.origin.y`过渡到`-736`;
+
*/
#pragma mark - Setter & Getter
- (void)setState:(MHRefreshState)state {
Expand Down

0 comments on commit 2b0c0d4

Please sign in to comment.