我必须实施左侧滑动菜单,例如UBER或Gmail。
我创建了一个自定义segue来将按钮连接到UITableViewController(菜单),工作正常但我有两个问题:
1.-当用户触摸桌面上的任何位置时,表格内容消失
2.-我不知道如何实施"放松"当用户触摸表格之外时,想法是只编写一次此代码而不是每个视图控制器。
My StoryBorad看起来像这样(非常早期的开发):
这是我的segue代码:
import UIKit
class LeftMenuSegue: UIStoryboardSegue {
override func perform() {
var content = self.sourceViewController as! UIViewController
var menu = self.destinationViewController as! UIViewController
var contentFrame: CGRect = content.view.frame
menu.view.frame = CGRectMake(-(contentFrame.size.width), 0, contentFrame.size.width/2, contentFrame.size.height)
var sideFrame: CGRect = menu.view.frame
var animationFrame = contentFrame
animationFrame.size.width = contentFrame.size.width/2
var blackview = UIView(frame: contentFrame)
blackview.backgroundColor = UIColor.blackColor().colorWithAlphaComponent(0.5)
menu.view.alpha = 0
blackview.alpha = 0
content.view.superview?.window?.addSubview(blackview)
content.view.superview?.window?.addSubview(menu.view)
UIView.animateWithDuration(0.5, delay: 0, options: UIViewAnimationOptions.CurveEaseOut,
animations: { () -> Void in
blackview.alpha = 0.5
menu.view.frame = animationFrame
menu.view.alpha = 1
}) { (finished) -> Void in
menu.didMoveToParentViewController(content)
}
}
}
在我的iPhone 6上运行时看起来像这样:
答案 0 :(得分:0)
对于unwind segue,您需要创建UIStoryboardSegue的另一个类子类。
你可以创建一个tapGesture来关闭菜单,你需要在viewController上定义这个方法
override func segueForUnwindingToViewController(toViewController: UIViewController, fromViewController: UIViewController, identifier: String?) -> UIStoryboardSegue {
}
您可以使用此CustomSegue指南:http://www.appcoda.com/custom-segue-animations/
您可以使用pod,而不是创建左侧滑动菜单,如下所示: https://github.com/John-Lluch/SWRevealViewController