在 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”关键字是什么? @MartinVelchevskiin
可以在完成块内使用完成的布尔值:)
感谢您抽出宝贵时间回复人!真的很感激!
@MartinVelchevski 嘿,这根本不是问题!以上是关于在 Swift 中使用 animateWithDuration 自定义 UIViewController 转换的主要内容,如果未能解决你的问题,请参考以下文章
swift 优雅地处理Swift中可本地化的字符串。注意:此代码在Swift 2中,需要在现代Swift中使用更新。
在 Swift 项目中使用 Objective C 类中的 Swift 类
在 Swift 项目中使用 Objective C 类中的 Swift 类