窥视和弹出 - 防止预览控制器被解雇

时间:2018-04-03 01:00:20

标签: ios swift peek peek-pop

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

0 个答案:

没有答案