我目前在屏幕左侧设置了我的桌面视图,以便我可以从下面设置动画,如下所示:
override func viewDidAppear(animated: Bool) {
tblView.frame = CGRectMake(-self.view.frame.size.width, 48, self.tblView.frame.size.width, self.tblView.frame.size.height)
}
现在我已经设置了一个按钮,可以将tableview从 - self.view.frame.size.width设置为0,如下所示,这样可以正常工作:
@IBAction func showMenu(sender: AnyObject) {
self.tblView.hidden = false
if flag == false{
showMenu()
} else {
hidemenu()
}
}
func showMenu(){
UIView.animateWithDuration(0.3, animations:{
self.tblView.frame = CGRectMake(0, 48, self.tblView.frame.size.width, self.tblView.frame.size.height)
} )
flag = true
}
func hidemenu(){
UIView.animateWithDuration(0.3, animations:{
self.tblView.frame = CGRectMake(-self.view.frame.size.width, 48, self.tblView.frame.size.width, self.tblView.frame.size.height)
} )
flag = false
}
问题是当我在点击tableview单元格后尝试隐藏菜单时,如下所示:
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var row = indexPath.row
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
switch row {
case 0:
hidemenu()
println("hide menu")
if firstVC == nil{
firstVC = storyboard.instantiateViewControllerWithIdentifier("firstVC") as? FirstViewController
}
activeViewController = firstVC
default:
println("no index")
}
}
tableview没有向左隐藏,而是动画看起来是从右边开始到0结束。相反,我正在寻找动画从0到-self.view.frame.size.width位置在x轴上
hideMenu函数被调用。
已编辑:使用None进行了数小时的调试后,我发现我的错误是在行中,当执行select方法时,我将视图控制器分配给containerView的内容视图
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
hidemenu()
var row = indexPath.row
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
switch row {
case 0:
if firstVC == nil{
firstVC = storyboard.instantiateViewControllerWithIdentifier("firstVC") as? FirstViewController
}
activeViewController = firstVC
.....
}
我有变量声明为
var activeViewController : UIViewController? {
didSet{
removeInactiveViewController(oldValue)
updateActiveViewController()
}
}
func updateActiveViewController(){
if let activeVC = activeViewController{
activeVC.view.frame = contentView.bounds
contentView.addSubview(activeVC.view)//this line gives me error
activeVC.didMoveToParentViewController(self)
}
}
在动画中向下钻取错误是在内容视图上添加activeVC作为contentView.addSubview(activeVC.view)。很抱歉很长的帖子..
如果我评论该行动画效果正常..但视图未添加到我的主视图中...我如何解决这个问题?
答案 0 :(得分:1)
实际上,您通过手动设置框架来应用动画,并且您已经设置了AutoLayout约束。所以这是内部冲突。请将UITableView
constraints
从storyboard
移除,并且工作正常。
初始
并在删除约束后,它看起来像。
希望这对你有所帮助。
答案 1 :(得分:0)
func tableView(tableView: UITableView, didSelectRowAtIndexPath indexPath: NSIndexPath) {
var row = indexPath.row
var storyboard: UIStoryboard = UIStoryboard(name: "Main", bundle: nil)
self.tblView.hidden = true
flag = false
........
}
并将其更改为
@IBAction func showMenu(sender: AnyObject) {
if self.tblView.hidden == true{
self.tblView.frame = CGRectMake(-500, 48, self.tblView.frame.size.width, self.tblView.frame.size.height)
}
self.tblView.hidden = false
if flag == false{
displayMenu()
}else{
hidemenu()
}
}