gpt4 book ai didi

ios - Swift 中的滑出式菜单导航问题

转载 作者:行者123 更新时间:2023-11-28 09:15:57 25 4
gpt4 key购买 nike

我关注了This教程并实现该动画,但现在我想在其中添加一些功能,就像当用户单击最小化的 viewController 我想弹出最小化的 viewController 我试图实现 TapGesture在那个 View 上,这是我的代码:

import Foundation
import UIKit

class TransitionOperator: NSObject, UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate{

var snapshot : UIView!
var isPresenting : Bool = true

func transitionDuration(transitionContext: UIViewControllerContextTransitioning) -> NSTimeInterval {
return 0.5
}


func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
if isPresenting{
presentNavigation(transitionContext)
}else{
dismissNavigation(transitionContext)
}
}

func presentNavigation(transitionContext: UIViewControllerContextTransitioning) {
let container = transitionContext.containerView()
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)
let fromView = fromViewController!.view
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)
let toView = toViewController!.view

let size = toView.frame.size
var offSetTransform = CGAffineTransformMakeTranslation(size.width - 120, 0)
offSetTransform = CGAffineTransformScale(offSetTransform, 0.6, 0.6)

snapshot = fromView.snapshotViewAfterScreenUpdates(true)

//TapGesture for detect touch
let aSelector : Selector = "singleTap"
let tapGesture = UITapGestureRecognizer(target: self, action: aSelector)
tapGesture.numberOfTapsRequired = 1
self.snapshot.addGestureRecognizer(tapGesture)

container.addSubview(toView)
container.addSubview(snapshot)

let duration = self.transitionDuration(transitionContext)

UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 0.5, initialSpringVelocity: 0.8, options: nil, animations: {

self.snapshot.transform = offSetTransform

}, completion: { finished in

transitionContext.completeTransition(true)
})

}
func singleTap(){

NavigationViewController().dismissViewControllerAnimated(true, completion: nil)
println("Touched")

}

func dismissNavigation(transitionContext: UIViewControllerContextTransitioning) {

let container = transitionContext.containerView()
let fromViewController = transitionContext.viewControllerForKey(UITransitionContextFromViewControllerKey)
let fromView = fromViewController!.view
let toViewController = transitionContext.viewControllerForKey(UITransitionContextToViewControllerKey)
let toView = toViewController!.view

let duration = self.transitionDuration(transitionContext)

UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.8, options: nil, animations: {

self.snapshot.transform = CGAffineTransformIdentity

}, completion: { finished in
transitionContext.completeTransition(true)
self.snapshot.removeFromSuperview()
})
}

func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {

self.isPresenting = true
return self
}

func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {

self.isPresenting = false
return self
}
}

当我点击那个最小化 View 时,Touched 被打印出来,你可以看到图像:

enter image description here

但是 View 并没有被关闭。我想弹出 TimelineViewController 回来。

提前致谢。

最佳答案

也许您需要做的是从单个 Tap 方法调用 self.dismiss Navigation()。虽然我不确定将什么上下文传递给该方法...

关于ios - Swift 中的滑出式菜单导航问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27684699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com