底部动画类似于 iOS 中的 Apple Maps 应用程序

Posted

技术标签:

【中文标题】底部动画类似于 iOS 中的 Apple Maps 应用程序【英文标题】:Bottom animation similar to Apple Maps application in iOS 【发布时间】:2018-02-24 21:09:27 【问题描述】:

想要创建一个动画,用户可以从底部滑动视图,类似于 ios 中的 Apple Maps 应用程序。但是在处理手势时遇到问题。

我的 mainVC 中的代码,其中 panVC 从底部添加为子视图,效果很好。(panVC 正确位于底部)

func displayFromBottom 
   let storyboard = UIStoryboard(name: "Main", bundle: nil)
    listVC = storyboard.instantiateViewController(withIdentifier: “PanViewContr") as! PanViewContr


    var startingFrame = self.view.bounds;
    startingFrame.origin.y = startingFrame.size.height; //Starts from the bottom of the parent.
    startingFrame.size.height = 100; //Has a height of 100.

    var finalFrame = self.view.bounds;
    finalFrame.origin.y = finalFrame.size.height - 100; //100 from the bottom of the parent.

    listVC.view.frame = startingFrame
    listVC.willMove(toParentViewController: self)
    self.addChildViewController(listVC)
    self.view.addSubview(listVC.view)
    listVC.didMove(toParentViewController: self)

    UIView.animate(withDuration: 0.5, animations: 
        self.listVC.view.frame = finalFrame
    )  complete in
        print("done”)
    

PanVC 的代码是处理平移手势的。

  func slideViewVerticallyTo(_ y: CGFloat) 
    self.view.frame.origin = CGPoint(x: 0, y: y)


@IBAction func panGesture(_ panGesture: UIPanGestureRecognizer) 
    switch panGesture.state 
    case .began, .changed:
        // If pan started or is ongoing then
        // slide the view to follow the finger
        let translation = panGesture.translation(in: view)
        let y = max(0, translation.y) //what should be value of y to make it dragable smoothly
        self.slideViewVerticallyTo(y)
        break
    case .ended:
        break
    

高度赞赏任何正确方向的提示。

【问题讨论】:

【参考方案1】:

我创建了一个可移动的扩展程序,它增加了在屏幕上移动 UIView 的功能,您可以在此处查看代码:https://github.com/szweier/SZUtilities/blob/master/SZUtilities/Classes/UIView/Movable/UIView%2BMovable.swift 您可能会在此代码中看到您自己缺少的东西。很抱歉我的回答不够具体,但希望它能让你朝着正确的方向前进。

【讨论】:

我尝试了链接,但它超出了屏幕。我希望屏幕只垂直移动。您对此有任何反馈吗 如果你删除了“+ translation.x”,它应该会删除我上面示例代码中左右平移的能力。

以上是关于底部动画类似于 iOS 中的 Apple Maps 应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用我的 ios App iOS 9 Swift 2.2 中的路线打开 Apple Maps App

通过传递纬度和经度打开 Apple 地图

Here maps iOS SDK:旋转Here maps中的标记

iOS 6 中的 Apple 地图方案:如何显示标注/图钉?

如何生成打开 Apple Plan 或 Google Maps 的链接

在 Swift 中的 Apple Maps 上添加标记标签 [关闭]