Swift - 出现在上下文中的 ViewController 的深色背景

Posted

技术标签:

【中文标题】Swift - 出现在上下文中的 ViewController 的深色背景【英文标题】:Swift - Dark background of the ViewController that appears over the context 【发布时间】:2018-09-24 14:13:41 【问题描述】:

这是创建我的自定义弹出窗口的代码:

extension UIViewController 

    public func presentPopup(animated: Bool, completion: (() -> Void)? = nil) 

        let popup = MBPopUpViewController(accentColor: UIColor(hexString: "E40C15"),
                                          popUpTitle: "Hello",
                                          popUpMessage: "Test PopUp",
                                          popUpFirstButtonLabel: "1",
                                          popUpSecondButtonLabel: "2")

        popup.modalPresentationStyle = .overCurrentContext
        present(popup, animated: animated, completion: completion)

    


有没有办法,当第二个出现时,如何通过淡入淡出动画使第一个视图控制器变暗一点?

Here你可以看到我现在拥有的东西。

您可以在照片应用中查看示例 here。当 AlertViewController 出现时,背景变暗。有什么想法可以实现吗?谢谢:)

【问题讨论】:

请公开您的图片,我们无法看到您的谷歌驱动器文件。 抱歉,刚刚更新了链接:D 【参考方案1】:

这听起来像你想要一个Modal Popover

可以将视图的背景颜色设置在另一个透明颜色之上。您需要在viewDidLoad 中设置该视图的颜色和所有内容。

确保 segue 被标记为 Cover Vertical,这样就没有擦除动画,并且是平滑的淡入淡出。还可以启用Over Current ContextOver Full Screen,具体取决于您希望它的外观。

根据您在第二个视图控制器中放置的元素,最终结果将如下所示。 (注意: gif 中显示的动画会加速。深灰色区域将包含您在视图中放置的任何内容)。

有一些很棒的资源可以帮助您制作这些。我可以在 YouTube 上推荐Mark Moeykens,他制作了有关此类事情的精彩视频。

【讨论】:

我想,它不适合我。我想要默认的视图控制器动画,因为我有一个 popOver 的自定义类,它应该从底部滑动,我需要的只是深色背景的动画。这是我现在拥有的:drive.google.com/open?id=1V0VVpSNwxQAd2W4YZfNGuMyD3ZL9yl6b 刚刚用我用来创建自定义弹出类对象的代码更新了我的问题 这仍然是可能的,并且仍然是我推荐的这样做。只需将模态转换样式从Cross Dissolve 更改为Cover Vertical 啊哈哈,事实是我需要为 popUp 设置垂直覆盖,为黑色背景设置 crossDissolve:PopUp 应该从底部滑动到其原始位置,并且背景应该将其 Alpha 从 0 更改为0.2 没有任何动作 :) 有可能吗? 你可能最终不得不创建一个自定义过渡样式,因为没有任何默认值可以同时执行这两种样式。

以上是关于Swift - 出现在上下文中的 ViewController 的深色背景的主要内容,如果未能解决你的问题,请参考以下文章

Swift 错误:表达式类型不明确,没有更多上下文

self.navigationController 在 swift 中为零

Swift:NSUserDefaults 没有立即设置

Swift iOS - 如何让键盘在出现 SearchController 的同时出现?

向 UINavigationBar 添加搜索按钮:Swift

Swift Mapkit - 远离用户位置