具有子子视图的UIView动画

时间:2015-06-15 19:44:14

标签: ios swift uiview

所以我想在主视图(本质上是子子视图)中为容器视图的子视图设置动画,我是否应该为子视图创建另一个视图控制器来控制子子视图或在主视图控制器中创建一个插座用于子视图?问题是我用UIButton触发动画,这也做了一些其他事情,所以如果我创建另一个视图控制器,这个UIButton会有两个IBAction。无论如何,这是我在主viewController中为动画制作的代码:

@IBAction func hourSelectorTap(gesture: UITapGestureRecognizer){
    if (isHourSelected){
        let path = UIBezierPath()
        path.moveToPoint(CGPoint(x:100, y:8))
        let anim = CAKeyframeAnimation(keyPath: "MoveZeBox")
        anim.path = path.CGPath
        self.MinHrView.layer.addAnimation(anim, forKey: "Move")
        isHourSelected = !isHourSelected

    } else{

    }

}

1 个答案:

答案 0 :(得分:1)

我的第一个问题是,如果您没有在其中放置U​​IViewController的某些子类,为什么要有容器视图?嵌入视图控制器的主要用途是,您可以切换UIViewController当前正在显示的子类。如果您只是想要嵌套视图,我建议嵌套UIViews并从那里开始。

基本上问题是,你有一些包含一些子视图的视图控制器,你想要为子视图设置动画,对吗?我会为我要制作动画的视图创建一个IBOutlet,比如myView,然后在我的按钮按下功能中,执行以下操作:

@IBAction func hourSelectorTap(gesture: UITapGestureRecognizer){
 if (isHourSelected){
    UIView.animateWithDuration(0.2, animations: {
        //your animation code here
        self.myView.frame = CGRectMake(50,100,300,300)
    }, completion: {
        //anything you want to do when the animation is complete
    })
 } else {

 }
}

否则,是的,处理视图中嵌入的视图控制器的正确方法是将该视图控制器子类化并将代码放在那里。