2017-07-22 60 views
0

我有一个UIPageViewController与垂直滚动基本上正常工作。但是,我遇到了一个小问题,我还无法修复:动画后在前一页上可见的下一页内容

UIPageViewController中的每个页面都应该“重置”页面(使已在页面中动画的元素返回到页面,所以说动画它们放回)时便结束过渡到didFinishAnimating页面和:

internal func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) 

的问题是,已经动画垂直向上外的一些用户界面元素(即UIView的,的UILabel和UIButton的)页面现在可以在前一页看到(这看起来相当丑陋,因为人们总是会看到当一个页面返回到上一页时,元素如何以动画方式返回到下一页)。我想为“重设”设置动画的原因是,当没有显示新页面时,甚至会调用函数(参见上文)(例如,用户只向下滚动一下,因此只会看到下一页的一小部分,然后抬起他的手指;他所在的页面已经会触发该函数意味着它试图重置,我不想直接(没有动画)将它设置到新的位置,因为它看起来更丑陋)。

因此,就解决这个问题有两种方法:

像一个上面这也将采取页面的变化考虑在内的函数(有一个在迅速?)还是有办法不让以下页面的内容超过前一页,如果这些页面已经按照前面所述进行了动画处理,则可以在页面之外或之外(是否有隐藏它们的方法?)。

回答

0

当我想着实现一种不那么干净的方式,即检测页面中的变化时,我设法自己找到了一个干净的方式(下图)。

internal func pageViewController(_ pageViewController: UIPageViewController, didFinishAnimating finished: Bool, previousViewControllers: [UIViewController], transitionCompleted completed: Bool) { 
    if completed { 
     //calling my reset function 
    } 
} 

if completed确实比较索引的网页来检测变化,我认为是相当干净的伎俩。因此,我现在没有任何动画重置它...(参见功能之后的问题)

相关问题