如何正确设置分页UICollectionView

时间:2018-03-14 11:19:38

标签: ios swift uicollectionview uicollectionviewlayout

我有一个类似于iPad主题演讲的iPad应用程序,左侧有一个狭窄的概述,我的"幻灯片的分页UICollectionView"在右边。集合视图使用默认的FlowLayout。其中一些幻灯片是标准PDF,有些是嵌入的UIViewController已经缩放(带有CGAffineTransform)并嵌入到单元格中。我想在屏幕上平滑地设置概览边栏的动画,并将当前页面单元格缩放到全屏。集合视图应允许以任何大小进行分页滑动。我正在使用故事板和自动布局。

我想我需要同时制作三件事:

  • 集合视图约束(到侧边栏)放大/缩小
  • 流程布局的sizeForItemAt:
  • 嵌入式视图控制器上的CGAffineTransform

我有一些工作(单个嵌入式View Controller" slide"可以正确缩放)但无法使collectionView / cell resize dance正常工作。单元格调整大小动画是生涩的,或者以错误的偏移结束,或者对最左边的单元格有效,但对其他单元格则无效。

我已经在this question的答案中尝试了大部分建议,但没有取得令人信服的成功。我无法相信它是不可能的,但此时我正在考虑动画静态幻灯片的烟雾和镜像方法,并在动画完成后隐藏它。附加的视频 - 忽略故障 - 说明了我之后的那种影响:

enter image description here

值得注意的是,在仔细检查时,Keynote在编辑模式下滑动幻灯片时会有所作为,并且手动管理下一张幻灯片在屏幕上滑动,因此可能不会使用{{ 1}}。

有没有人做过类似的事情,或者有什么建议可以尝试?

1 个答案:

答案 0 :(得分:0)

我设法解决了这个问题。这是一个概念验证GitHub回购here

有一些活动部分:

  • 有两段UIView缩放代码。我怀疑这些可以与适当的委托引用相结合,因为嵌入了嵌套视图控制器。创建集合视图单元格时,第一块正确缩放(静态)。第二个是侧边栏大小更改时的动画缩放/翻译。

  • 我添加了一个FlowLayout子类来删除闪烁,因为在缩放过程中集合的布局无效。

  • 顶级VC中与侧边栏相关的转换使用了书中的大部分技巧 - invalidateLayout()performBatchUpdates(...)layoutIfNeeded()等,并为其制作动画contentOffset到正确的值。需要手动跟踪正确的页面/幻灯片。

  • 在调整大小时,偶尔会有轻微的闪烁。这可能不是我的特定颜色方案的问题,在深灰色上将是黑色。如果有人可以建议如何追踪或缓解它,那么奖励积分。