ChavezChen / CWLateralSlide

One line of code to integrate 0 coupling side drawer!一行代码集成0耦合侧滑抽屉!
MIT License
1.28k stars 201 forks source link

向右滑动出现界面后, 再向左滑动, 只滑动一小段距离, 跳动非常厉害 #6

Closed wolfcon closed 6 years ago

wolfcon commented 6 years ago

向右滑动出现界面后, 再向左滑动, 只滑动一小段距离, 跳动非常厉害

兄弟, bug有点明显啊

ChavezChen commented 6 years ago

我这没有这个问题呀,iOS 10 和 iOS 11都没有。。能提供一下详细的信息么?在什么情况下出现的?

ChavezChen commented 6 years ago

你好,我这边测试暂时还是没发现这个情况哦,你那边看看是不是最新的代码咯,因为iOS11刚出来的时候会出现你所述的情况,但是后面已经做修改了。。或者方便留个联系方式看看具体的表现吗?

wolfcon commented 6 years ago

侧滑返回问题.mp4.zip

iPhoneX真机录屏.

wolfcon commented 6 years ago

其实我的项目里早都有这个bug, 看到你的库后发现你也有这个问题😆. 我还没找到解决方法

代码实现跟你是类似的.

ChavezChen commented 6 years ago

😓😓我用模拟器没问题。。你手机是什么版本呀。晚上回去找室友借手机看看。。 木有X很尴尬。 222

ChavezChen commented 6 years ago

6C1FDDF05C8BFE2DC7C5195AB8A95A00.mp4.zip 我把用真机iPhoneX弹跳的问题调整了一下,基本不会弹了。效果在上面,也可以运行一下我的代码试试,你项目里面也可以按照我这个改一下,因为只有iOS11会有弹跳的问题,我把动画设置成UIView的帧动画,然后判断一下版本把开始时间稍微往后移了一丢丢,就基本把弹跳的那部分过掉了。。这样也会有一点点小问题,就是手势返回的时候刚开始一丢丢可能会不太响应,但是用真机的时候感觉并不明显,体验也不差,应该不会太纠结这个问题,你先看看哈。

wolfcon commented 6 years ago

可以的. 我研究了一下, 其实是Transition动画, 在设置了动画代码, 还没执行之前TransitionView貌似会把最终的动画结束位给算出来, 然后播放动画之前会将界面直接渲染出最终的内容(在ContainerView渲染到界面之前), 动画播放, ContainerView渲染到页面之后, 这中间有大约15~30ms的间隔. 如果在这时候播放动画, 就会导致跳动的问题

我在[UIView animateWithDuration:duration delay:0.03..] 延迟了30毫秒, 我观察了一下, 其实系统的PercentDrivenTransition驱动的动画也是有延迟的. 貌似也是故意做了这个操作避免了跳动问题

ChavezChen commented 6 years ago

👍👍👍

xuezhanying commented 6 years ago

厉害 厉害 ,都是大神,你们说的我完全懵逼。