带有自定义动画的弹出控制器后屏幕变黑

时间:2019-01-29 13:17:46

标签: ios swift

我正在尝试用呈现控制器的动画来推送控制器,并像关闭一样弹出控制器。

我正在使用此代码来推送控制器

    let transition:CATransition = CATransition()
    transition.duration = 0.4
    transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.linear)
    transition.type = CATransitionType.moveIn
    transition.subtype = CATransitionSubtype.fromTop
    AppDelegate.shared.window?.rootViewController!.view.layer.add(transition, forKey: kCATransition)
    self.push(articleDetailScene, animated: false)

并使用此代码进行弹出。

    let transition:CATransition = CATransition()
    transition.duration = 0.0
    transition.timingFunction = CAMediaTimingFunction(name: CAMediaTimingFunctionName.easeOut)
    transition.type = CATransitionType.reveal
    transition.subtype = CATransitionSubtype.fromBottom
    self.navigationController?.view.layer.add(transition, forKey: kCATransition)
    self.pop(animated: false)

摆好控制器后,黑屏出现在屏幕底部。我使用了answers,但是为该空间创建了一个白色屏幕,并且没有在该空间显示我的单元格。 Black screen when I don't use window background color to whiteWhen I set window background color to white

1 个答案:

答案 0 :(得分:0)

您可以尝试此示例代码。

我要添加过渡到self.view的窗口而不是AppDelegate的窗口

我有基本视图控制器,并且那里有以下方法

func addTransitionForPush () {
    let transition = CATransition()
    transition.duration = 0.55
    transition.type = CATransitionType.push
    transition.subtype = CATransitionSubtype.fromBottom
    transition.fillMode = CAMediaTimingFillMode.forwards
    view.window?.layer.add(transition, forKey: kCATransition)
}


func addTransitionForPop () {
    let transition = CATransition()
    transition.duration = 0.55
    transition.type = CATransitionType.push
    transition.subtype = CATransitionSubtype.fromTop
    transition.fillMode = CAMediaTimingFillMode.backwards
    view.window?.layer.add(transition, forKey: kCATransition)
}

我如何在视图控制器中使用它

用于推送VC

@objc private func btnFilterTapped() {
    self.addTransitionForPush()
    let vc = self.storyboard........
    self.navigationController?.pushViewController(vc, animated: false)
}

用于弹出

    self.addTransitionForPop()
    self.navigationController?.popViewController(animated: false) 

如果您仍然遇到黑屏问题,请告诉我。