我遇到UIViewControllerPreviewing
API问题。它在以前版本的应用程序(iOS?)中运行良好,但我只是注意到它在当前版本中不再有效。
我没有更改任何特定的内容(只是迁移到Swift 4和这种更改),但这种情况发生在整个应用程序中(不仅仅是示例下方),代表4-5 不同强制触摸偷看和弹出。
当我强行触摸我的收藏视图上的一个单元格时,这就是我所看到的。模糊发生但我的预览视图控制器没有出现。
请注意,pop工作正常,我的视图控制器配置良好,会被推送到导航堆栈。
我尝试使用Xcode的UI调试器,似乎我的预览视图控制器的视图没有给出大小,很奇怪。
这是我的代码:
extension HomeViewController: UIViewControllerPreviewingDelegate {
func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let indexPath = collectionView.indexPathForItem(at: location), let cell = collectionView.cellForItem(at: indexPath) as? MyCell else {
return nil
}
// Configure previewing context
let viewRectInCollectionView = collectionView.convert(cell.frame, from: coverImageView.superview!)
previewingContext.sourceRect = viewRectInCollectionView
// Generate cover view
let viewController = MyViewController(/* some parameters */)
return viewController
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
navigationController?.pushViewController(viewControllerToCommit, animated: true)
}
}
我还试图提供首选内容大小,但它没有改变任何内容:
viewController.preferredContentSize = CGSize(width: 300.0, height: 300.0)
// or
viewController.preferredContentSize = CGSize(width: 0.0, height: 300.0)
我很乐意收到有关尝试的建议,或者您已经在应用中修复了此问题的解决方案。
谢谢!
答案 0 :(得分:0)
也许代替:
previewingContext.sourceRect = viewRectInCollectionView
尝试:
previewingContext.sourceRect = cell.frame
。
使用collectionView.convert()
时出现类似问题。