自定义UIViewController在Swift中使用animateWithDuration进行转换

时间:2014-06-16 18:16:02

标签: ios objective-c cocoa-touch animation swift

所以......事实是,我几乎盲目地浏览文档。我真的不明白为什么没有示例代码说明如何使用某些方法。但是,有足够的抱怨我。

我有一个符合UIViewControllerTransitioningDelegate和UIViewControllerAnimatedTransitioning的视图控制器。我有一些动画(使用facebook pop)基本上可以滑出视图的某些元素。完成这些动画后,我想转换到下一个视图控制器。

我已经覆盖了prepareForSegue:

override func prepareForSegue(segue: UIStoryboardSegue!, sender: AnyObject!) {

      self.transitioningDelegate = self;

      let targetViewController = self.storyboard.instantiateViewControllerWithIdentifier("chooseSigilViewController") as UIViewController;

      self.presentViewController(targetViewController, animated: true, completion: nil);

      // slide out ui elements in the current UIViewController
      slideLabelsOut(greetingsLabel, nameUtilityLabel);
      slideTextFieldOut(inputPlayerNameTextField);
      slideProceedButtonOut(sender as UIButton); }

我设置转换持续时间和实际动画......我遇到的问题是这一行:

UIView.animateWithDuration(self.transitionDuration(transitionContext), animations: <#(() -> Void)?#>, completion: <#((Bool) -> Void)?#>)

如何在动画中设置我的代码:和完成:参数。

我已经在Obj-C代码中看到了这个:

^{ // code goes here }

我已经尝试过这种方式,它没有用。它也感觉很尴尬,因为我不知道那是什么&#34; ^&#34;甚至呢?

1 个答案:

答案 0 :(得分:3)

尝试这样的事情:

UIView.animateWithDuration(self.transitionDuration(transitionContext), delay: 0, options: .CurveLinear, animations: {
    // Your animation
}, completion: {
    (finished: Bool) in
    // Your completion
})