2015-06-15 2 views
2

Итак, я хочу анимировать подкласс представления контейнера в моем главном представлении (по существу, в подзаголовке), должен ли я создать другой контроллер представления для подсмотра для управления подзоном или создать выход в главный контроллер представления для подзаголовка? Проблема в том, что я запускаю анимацию с помощью UIButton, что также делает некоторые другие вещи, поэтому, если я создаю еще один контроллер представлений, этот UIButton будет иметь два IBActions. В любом случае, это код, у меня есть для анимации в главном ViewController: анимация UIView с sub-subview

@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

Имеет ли смысл, чтобы подзадача была владельцем другого контроллера представления (а не под-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

Смежные вопросы