首页 > 解决方案 > 如何使 UIPageViewController 的缓存页面失效?

问题描述

我有一组 UIView 及其控制器,它们代表“文档”中的不同页面。所有这些都在 Apple 的 UIPageViewController 的控制之下。

页面不一定具有静态图形内容。查看任何给定页面时,内容可以根据用户操作而更改。发生这种情况时,我的代码使用setNeedsDisplay.

但是视图绘制更新不会发生,直到页面显示>之后< UIPageViewController 完成了它所有的魔法动画翻页。

问题在于,在该动画期间,UIPageViewController 似乎使用了旧页面像素的缓存版本。用户看到旧内容直到翻页动画结束,此时,有最后一次更新(由于较早的setNeedsDisplay调用),然后显示页面的最终正确版本。但是用户看到了这种(闪烁的)变化,没有视觉上的意义,并且违反了所见即所得的 GUI 错觉。

我不能调用每个视图的drawRect:方法来强制像素改变;drawRect:保留给系统调用。

那么如何让 UIPageViewController 更新或丢弃缓存页面以防止出现这种视觉混乱的情况呢?

标签: ios

解决方案


推荐阅读