代码之家  ›  专栏  ›  技术社区  ›  Pangu

当使用3D触摸屏功能时,如何为表格视图单元格中的项目实现浮动动画?

  •  0
  • Pangu  · 技术社区  · 6 年前

    我已经使用以下代码示例在我的应用程序中实现了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
        }
    }
    

    结果是:

    enter image description here

    我喜欢什么 在iOS应用商店中可以看到:

    enter image description here

    如果您注意到,当3D Peek手势启动时,文本、图像以及GET按钮都有一个 爆裂 动画,看起来 浮动 单元格不移动 和我的不一样。

    如何复制此动画?

    0 回复  |  直到 6 年前