2015-06-15 121 views
2

所以我想動畫的容器視圖的子視圖在我的主要觀點(本質上是子子視圖),我應該創建另一個視圖控制器的子視圖控制子子視圖或創建一個出口子子視圖的主視圖控制器?問題是我用一個UIButton觸發動畫,這也會做一些其他的事情,所以如果我創建另一個視圖控制器,這個UIButton將有兩個IBAction。不管怎麼說,這是我的代碼有主的viewController動畫: 與子子視圖的UIView動畫

@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{ 

    } 

} 
+0

是否有意義的是子視圖是由另一個視圖控制器(而不是sub-subview)擁有者?只有您可以告訴我們該視圖包含哪些內容以及這些內容如何相互作用,按鈕的位置以及當前視圖控制器在做什麼...... – Wain

回答

1

我對第一個問題是,爲什麼,如果你不把UIViewController中的某些子類中有一個容器的看法?嵌入視圖控制器的主要用途是可以切換出當前顯示哪個子類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 { 

} 
} 

否則,是的,用於處理的正確方法視圖控制器被嵌入到你的視圖中,是爲了控制視圖控制器的子類,並將代碼放在那裏。

+0

就是這樣,謝謝!我很困惑UIView.animateWithDuration如何實際工作,我有點改變了本教程的代碼:http://mathewsanders.com/animations-in-swift-part-two/ – Liumx31

+0

啊,好吧很高興它的工作! – erparker