UIPageViewController 在删除最后一张照片时以错误的方向显示动画

UIPageViewController shows an animation in the wrong direction when deleting the last photo

我正在使用具有过渡样式滑动的 UIPageViewController 来实现照片库。当用户滑动浏览照片时,她可以删除单张照片,在这种情况下,画廊会转到下一张照片,同时还有动画。这按预期工作。

如果最后一张照片被删除,我们将转到被删除照片的前一张照片。这也按预期工作,但动画是错误的 — 看起来好像我们要去下一张照片。

我的代码是:

let photo = (viewControllers!.first as! SinglePhotoController).photo
var nextPhoto = Photo.after(photo: photo)
if nextPhoto == nil {
  nextPhoto = Photo.before(photo: photo)
  print("You deleted the last photo, so showing previous photo")
}
photo.delete {
  let nextController = self.makeController(photo: nextPhoto!)
  self.setViewControllers([nextController], direction: .forward, animated: true)
}

photo.delete()是删除照片的方法,在主线程调用回调

如何使用不同的动画调用 setViewControllers()?

这是在 iOS 10.

删除最后一张照片时只需使用方向:.reverse即可。

这个效果是暂时的——一旦由 setViewControllers() 触发的动画完成,它就不再有效果。换句话说,导航方向保持不变:如果您有 A、B 和 C,然后删除 C,您将最终得到预期的 A 和 B,而不是 B 和 A。