我正在尝试实施Peek& Pop和目前为止,当用户进行3D触摸手势时,我成功地呈现了我的预览控制器。但是,即使在用户发布他的3D触摸手势之后,我仍希望保持预览控制器的位置。我很确定当预览有相关动作时会自动发生这种情况,但在我的情况下,我没有任何动作。
有没有任何标准或简单的方法来实现这一目标?我试图环顾四周,但到目前为止我还没有取得任何成功。
附加问题 - 似乎我的预览控制器应用了一些默认转换,使其看起来更小(或缩小)。是否有任何方法可以删除它并获得相同的外观,就好像它没有通过窥视一样呈现?
如果它有帮助,到目前为止我的代码(它在UITableViewController
内)
@objc internal func previewingContext(_ previewingContext: UIViewControllerPreviewing, viewControllerForLocation location: CGPoint) -> UIViewController? {
guard let indexPath = tableView.indexPathForRow(at: location),
let cell = tableView.cellForRow(at: indexPath),
let viewController = previewController(for: indexPath) else { return nil }
// Get frame for current cell
previewingContext.sourceRect = view.convert(cell.frame, from: tableView)
// Bind ViewModel
bindPreviewController!(viewController, indexPath)
// Set minimal size for Preview
viewController.preferredContentSize = viewController.view.systemLayoutSizeFitting(view.frame.size.withHeight(UILayoutFittingCompressedSize.height))
return viewController
}
/// To be overriden in subclasses
internal func previewController(for indexPath: IndexPath) -> UIViewController? {
return nil
}
@objc internal func previewingContext(_ previewingContext: UIViewControllerPreviewing, commit viewControllerToCommit: UIViewController) {
// Not implemented just yet.
}