为什么触发放松继续的按钮会立即消失?

问题描述:

我正在开发一个应用程序,我使用自定义细节在两个UIViewController之间导航。为什么触发放松继续的按钮会立即消失?

赛格到第二个UIViewController动画就好了。但是,当展开顺序被触发时,触发该按钮的按钮会立即消失,同时缓慢地将剩下的动画制作好。

Gif of the animation

的按钮是通过故事板设置,并从中我按住Ctrl拖动到该UIViewController的退出。一个放松的时间出现了,我建立了所有必要的文件。

我给你我的自定义类的开卷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看到。有人会说动画现在可以正常工作,但那个按钮的早期消失真的让我困扰。我想:

  • 调节按钮高亮状态
  • 不只是在紧凑型/普通
  • 设置安装的按钮,按钮的系统类型为自定义
  • 努力探索的确切时刻,按钮消失通过断点(找不到它,但发现,即在闭合块设置的帧是不任一个问题)
  • 评论出dismissViewControllerAnimated:功能

我没有找到任何解决方案。

+0

难道是突出显示的背景颜色是相同的绿色?也许尝试将标题颜色更改为黑色,以便您可以轻松查看颜色差异。或者它可能是自动布局魔术?您可以创建另一个具有类似约束的按钮,并查看当您触摸第一个按钮时该按钮是否也会消失。在这里抓着吸管! – Michael

+0

@迈克尔感谢您的意见!我尝试了所有的建议,可悲的是一开始没有任何工作,但你是对的,这是自动布局魔术。我现在要回答我的问题,为了其他人的知名度。 – SebastianR

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

This is what the constraint should be set like.

这个错误是钉扎的按钮,顶部布局指南的顶部约束,而不是视图顶部。改变这个锚解决了我的问题,我的按钮停止隐藏:)