我正在尝试实现 Peek & Pop,到目前为止,当用户执行 3d 触摸手势时,我已经成功地展示了我的预览控制器。但是,即使在用户释放他的 3d 触摸手势之后,我也希望将预览控制器保持在原位。我很确定当预览具有关联的操作时,这会自动发生,但就我而言,我没有任何操作。
是否有任何标准或简单的方法来实现这一目标?我试图环顾四周,但到目前为止我还没有取得任何成功。
附加问题 - 我的预览控制器似乎应用了一些默认转换,使其看起来更小(或缩小)。有什么方法可以删除它并获得与未通过窥视呈现相同的外观?
如果它有帮助,这是我到目前为止的代码(它在 a 里面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.
}