Я извиняюсь за то, чтобы быстро и попытаться реализовать сенсорное меню. До сих пор я подключил контроллеры представлений и прекрасно работал с этим кодом с этим кодом, и я не хочу, чтобы он нажал другой контроллер представления. Я хочу, чтобы он появился над ним. Код ниже подталкивает все. Как мне изменить его, чтобы появиться над контроллером представления вместо нажатия.Меню, которое скользит по контроллеру представления SWIFT
import UIKit
@objc protocol MenuTransitionManagerDelegate {
func dismiss()
}
class MenuTransitionManager: NSObject, UIViewControllerAnimatedTransitioning, UIViewControllerTransitioningDelegate {
let duration = 0.5
var isPresenting = false
var snapshot:UIView? {
didSet {
if let delegate = delegate {
let tapGestureRecognizer = UITapGestureRecognizer(target: delegate, action: "dismiss")
snapshot?.addGestureRecognizer(tapGestureRecognizer)
}
}
}
var delegate:MenuTransitionManagerDelegate?
func transitionDuration(transitionContext: UIViewControllerContextTransitioning?) -> NSTimeInterval {
return duration
}
func animateTransition(transitionContext: UIViewControllerContextTransitioning) {
// Get reference to our fromView, toView and the container view
let fromView = transitionContext.viewForKey(UITransitionContextFromViewKey)!
let toView = transitionContext.viewForKey(UITransitionContextToViewKey)!
// Set up the transform we'll use in the animation
guard let container = transitionContext.containerView() else {
return
}
let moveDown = CGAffineTransformMakeTranslation(0, container.frame.height - 240)
let moveUp = CGAffineTransformMakeTranslation(0, -50)
// Add both views to the container view
if isPresenting {
toView.transform = moveUp
snapshot = fromView.snapshotViewAfterScreenUpdates(true)
container.addSubview(toView)
container.addSubview(snapshot!)
}
// Perform the animation
UIView.animateWithDuration(duration, delay: 0.0, usingSpringWithDamping: 0.8, initialSpringVelocity: 0.8, options: [], animations: {
if self.isPresenting {
self.snapshot?.transform = moveDown
toView.transform = CGAffineTransformIdentity
} else {
self.snapshot?.transform = CGAffineTransformIdentity
fromView.transform = moveUp
}
}, completion: { finished in
transitionContext.completeTransition(true)
if !self.isPresenting {
self.snapshot?.removeFromSuperview()
}
})
}
func animationControllerForPresentedController(presented: UIViewController, presentingController presenting: UIViewController, sourceController source: UIViewController) -> UIViewControllerAnimatedTransitioning? {
isPresenting = true
return self
}
func animationControllerForDismissedController(dismissed: UIViewController) -> UIViewControllerAnimatedTransitioning? {
isPresenting = false
return self
}
}
Свойства альфы, что означает u? – Slygoth
Свойства Alpha из UIView - это число с плавающей запятой, которое представляет его прозрачность. вы можете прочитать больше из [this] (https://developer.apple.com/library/ios/documentation/UIKit/Reference/UIView_Class/#//apple_ref/occ/instp/UIView/alpha). –