我已经使用以下代码示例在我的应用程序中实现了3D Touch Peek&Poop:
extension ParentVC: UIViewControllerPreviewingDelegate
{
func previewingContext(_ previewingContext: UIViewControllerPreviewing,
viewControllerForLocation location: CGPoint) -> UIViewController?
{
guard let indexPath = mmTableView?.indexPathForRow(at: location) else { return nil }
guard let cell = myTableView.cellForRow(at: indexPath) else { return nil }
guard let detailsVC = storyboard?.instantiateViewController(withIdentifier: "ChildVC") as?
ChildVC else {
return nil
}
detailsVC.manager = manager
guard let detailsManager = detailsVC.manager else {
return nil
}
previewingContext.sourceRect = cell.frame
return detailsManager.previewDetails(indexPath: indexPath, detailsVC: detailsVC)
}
func previewingContext(_ previewingContext: UIViewControllerPreviewing,
commit viewControllerToCommit: UIViewController)
{
navigationController?.pushViewController(viewControllerToCommit,
animated: true)
}
}
class ParentVC: UIViewController
{
var manager = Manager()
override func viewDidLoad()
{
super.viewDidLoad()
if traitCollection.forceTouchCapability == UIForceTouchCapability.available
{
registerForPreviewing(with: self,
sourceView: myTableView)
}
...
}
class Manager: NSObject
{
...
public func previewClothingDetails(indexPath: IndexPath, detailsVC: ChildVC) -> ChildVC
{
// Set text and image in ChildVC here
detailsVC.preferredContentSize = CGSize(width: 0.0,
height: 320.0)
return detailsVC
}
}
结果是:
我喜欢什么
在iOS应用商店中可以看到:
如果您注意到,当3D Peek手势启动时,文本、图像以及GET按钮都有一个
爆裂
动画,看起来
浮动
单元格不移动
和我的不一样。
如何复制此动画?