【发布时间】:2016-06-11 20:24:56
【问题描述】:
我正在开发一个应用程序,我在其中使用自定义 segues 在两个 UIViewController 之间导航。
第二个UIViewController 的动画效果很好。但是当 unwind segue 被触发时,触发它的按钮会立即消失,而其余部分则可以慢慢动画化。
按钮是通过 Storyboard 设置的,我从它 ctrl 拖到 UIViewController 的出口。一个放松的转场出现了,我设置了所有必要的文件。
我将我的自定义类分配给 Unwind segue,现在像这样覆盖perform()-方法:
override func perform() {
let settingsVCView = self.sourceViewController.view
let startVCView = self.destinationViewController.view
let screenHeight = UIScreen.mainScreen().bounds.size.height
let screenWidth = UIScreen.mainScreen().bounds.size.width
let window = UIApplication.sharedApplication().keyWindow
window?.insertSubview(startVCView, aboveSubview: settingsVCView)
UIView.animateWithDuration(0.8, delay: 0, options: .CurveEaseInOut, animations: { () -> Void in
settingsVCView.frame = CGRectMake(0, -(screenHeight), screenWidth, screenHeight)
startVCView.frame = CGRectMake(0, 0, screenWidth, screenHeight)
}) { (finished) -> Void in
self.sourceViewController.dismissViewControllerAnimated(false, completion: nil)
}
}
一切都设置好了,动画就完成了,就像你在 gif 中看到的那样。有人会说动画现在可以正常工作,但是那个按钮的早期消失真的让我很困扰。我试过了:
- 调整按钮高亮状态
- 不只是在 Compact/Regular 中安装按钮
- 将按钮类型从系统设置为自定义
- 试图追踪确切的时刻,按钮通过断点消失(找不到它,但发现在闭包块中设置框架也不是问题)
- 注释掉了
dismissViewControllerAnimated:函数
我没有找到任何解决方案。
【问题讨论】:
-
会不会是高亮的背景颜色是一样的绿色?也许尝试将标题颜色更改为黑色,以便您可以轻松看到颜色差异。或者它可能是自动布局的魔法?您可以创建具有类似约束的第二个按钮,看看当您触摸第一个按钮时它是否也会消失。在这里抓着稻草!
-
@Michael 感谢您的意见!我尝试了你所有的建议,遗憾的是一开始没有任何效果,但你是对的,这是自动布局的魔法。为了其他人的可见性,我现在要回答我的问题。
标签: ios swift uiviewcontroller uistoryboard uistoryboardsegue