0

我正在尝试实现 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.
}
4

0 回答 0