ios - 跨多个 View Controller 使用共享背景 View 的最佳实践是什么?

标签 ios swift uiview uiviewcontroller window

通常在我的应用程序中,我需要使用背景图像或带有渐变的自定义 View ,如下所示:

enter image description here

现在我只是定义一个 BackgroundView 类来呈现自己,但是我需要该项目,然后我将每个 View Controller 的 Root View 作为该类的一个实例。这是一个不错的解决方案,但在某些用例中它还不够。例如,如果我想让 Controller 像这样淡出:

UIView.animate(withDuration: self.transitionDurationOut, animations: {
            self.view.alpha = 0
        }) { (Finished) in
        }

屏幕将逐渐变黑(窗口的默认颜色)。我宁愿这样做,这样我就可以淡出 Controller 的 View 以显示背景。我可以使用容器 View 来完成此操作,但我希望尽可能多地删除样板代码。是否有某种方法可以为窗口提供某种 Root View ,如果其 View 变得透明,该 View 将出现在事件 Controller 的后面?

最佳答案

我认为通过将子类设置为 View Controller Root View ,您有一个很好的解决方案。向 View Controller Root View 添加一个清晰的 subview 并在该 subview 而不是 Root View 上执行淡入淡出怎么样。

例子:

self.view = BackGroundView() // Gradient background

let fadeView = UIView()
fadeView.backgroundColor = UIColor.clearColor()

/* Add content to fadeView here */

self.view.addSubview(fadeView)

UIView.animate(withDuration: self.transitionDurationOut, animations: {
        self.view.fadeView = 0
    }) { (Finished) in
}

关于ios - 跨多个 View Controller 使用共享背景 View 的最佳实践是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39478338/

相关文章:

ios - 当两个 ViewController 打开时,如何在两个 ViewController 中接收相同的回调?

ios - 如何按星期几对数据进行分组和求和?

ios - 如何将 Google MapView 放入 UIView 中?

ios - 平滑 Core Graphics 曲线

ios - 如何动态定位 iPhone 的 UIDatePicker 控件

iOS - 从数组中获取第一个非空字符串元素

ios - 子类化 UIButton

ios - 初始化自定义类 UIVIew

ios - 在方法之外获取值(value)

iphone - 将 iPhone 通讯录联系人放入移动网络应用程序?