gpt4 book ai didi

ios - 在容器 View 上添加 ViewController 时, TableView 动画无法正常工作?

转载 作者:行者123 更新时间:2023-11-29 02:05:20 25 4
gpt4 key购买 nike

我目前已经在屏幕左侧设置了我的 tableview,这样我就可以从那里为它设置动画,如下所示:

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 到 x 轴上的 -self.view.frame.size.width 位置的动画.

hideMenu 函数被调用。

已编辑:在使用 None 进行调试数小时后,我发现我的错误在线时在选择方法中我将 View Controller 分配给 containerView 的内容 View

  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)

}

}

要深入了解动画中的错误是在内容 View 上添加 activeVC 作为 contentView.addSubview(activeVC.view)。抱歉,帖子太长了..

如果我注释行动画工作正常..但是 View 没有添加到我的主视图...我该如何解决这个问题?

最佳答案

实际上,您是通过手动设置帧来应用动画,并且您已经设置了 AutoLayout 约束。所以这是内部冲突。请从 storyboard 中删除您的 UITableView constraints 并且它工作正常。

初始

enter image description here

去除约束后,它会是这样的。

enter image description here

希望对你有帮助。

关于ios - 在容器 View 上添加 ViewController 时, TableView 动画无法正常工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29842639/

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