【问题标题】:Why is the button that triggers an unwind segue instantly disappearing?为什么触发 unwind segue 的按钮会立即消失?
【发布时间】: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


【解决方案1】:

我终于通过首先清除该按钮的所有布局约束来解决问题。然后我再次点击它,它并没有消失,所以它与约束有关。

This is what the constraint should be set like.

错误是将按钮的顶部约束固定到顶部布局指南而不是视图顶部。更改此锚点解决了我的问题,并且我的 Button 停止隐藏 :)

【讨论】:

    猜你喜欢
    • 2014-03-23
    • 2017-02-20
    • 2013-04-30
    • 1970-01-01
    • 1970-01-01
    • 2013-06-23
    • 1970-01-01
    • 2019-03-07
    • 2018-08-24
    相关资源
    最近更新 更多