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

Posted

技术标签:

【中文标题】在 Swift 中使用 animateWithDuration 自定义 UIViewController 转换【英文标题】:Custom UIViewController transitions with animateWithDuration in Swift 【发布时间】:2014-06-16 18:16:01 【问题描述】:

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

我有一个符合 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 

我试过了,没用。而且感觉很尴尬,因为我真的不知道那个“^”到底是做什么的?

【问题讨论】:

【参考方案1】:

试试这样的:

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

【讨论】:

非常感谢伙计!我完全走错了这条路。那么 (finished: Bool) 之后的这个“in”关键字是什么? @MartinVelchevski in 可以在完成块内使用完成的布尔值:) 感谢您抽出宝贵时间回复人!真的很感激! @MartinVelchevski 嘿,这根本不是问题!

以上是关于在 Swift 中使用 animateWithDuration 自定义 UIViewController 转换的主要内容,如果未能解决你的问题,请参考以下文章

如何在OC中使用Swift如何在Swift中使用OC

swift 优雅地处理Swift中可本地化的字符串。注意:此代码在Swift 2中,需要在现代Swift中使用更新。

在 Swift 项目中使用 Objective C 类中的 Swift 类

在 Swift 项目中使用 Objective C 类中的 Swift 类

如何在 Swift 中使用 Apple 地图 - 你必须使用 C 还是 Swift 可以?

swift 在swift中使用javascriptcore