首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用UIAppearance设置ViewController的backgroundColor

如何使用UIAppearance设置ViewController的backgroundColor
EN

Stack Overflow用户
提问于 2017-09-08 21:47:17
回答 3查看 3.2K关注 0票数 1

我正在尝试使用UIAppearance来配置我的应用程序的样式。它与UIView或UIButton等UI组件完美配合,但不能与UIViewControllers配合使用。我想做一些类似的事情:

代码语言:javascript
复制
let appearance = FirstViewController.appearance()

有没有办法在ViewControllers中使用UIAppearance?

EN

回答 3

Stack Overflow用户

发布于 2017-09-08 21:53:48

不是在viewController中设置背景颜色,而是在viewControllers view上设置背景颜色。如果你使用UIView.appearance().backgroundColor,你会改变所有视图的背景。

所以你的问题的答案是否定的,你不能使用UIAppearance来改变viewControllers的背景颜色。

您可以执行以下操作:

代码语言:javascript
复制
class FirstViewController: UIViewController {
    override func viewDidLoad() {
        super.viewDidLoad()
        view.backgroundColor = .red
    }
}

然后使用故事板中的检查器将UIViewController更改为FirstViewController

票数 3
EN

Stack Overflow用户

发布于 2017-09-08 21:57:31

正如您在UIAppearance协议的documentation中看到的,默认情况下只有UIViewUIBarItem两个类采用它,因此UIViewController类没有appearance()函数。

您可以通过实现协议所需的方法来扩展UIViewController,或者可能更简单的解决方案是创建您自己的UIViewController子类,它为类view.backgroundColor属性提供默认颜色,并使您的所有ViewControllers继承此类,而不是直接继承UIViewController

票数 3
EN

Stack Overflow用户

发布于 2019-03-22 22:37:34

正如前面的回答所指出的,没有办法通过UIAppearance协议改变UIViewController的根视图背景,但是有一些方法可以实现相同的结果,而不需要让所有其他UIViewController继承一个根ViewControllers子类,或者在每个UIViewControllerviewDidLoad()中设置颜色(这两种方法都有各自的缺点)。

相反,您可以创建UIView子类

代码语言:javascript
复制
class BackgroundView: UIView {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)

        // Set your background color
        self.backgroundColor = .black

        // Or, if your background is an image
        self.layer.contents = UIImage(named: "background")!.cgImage
    }
}

在情节提要中,将ViewController的根视图类设置为这个UIView子类

同样的方法也适用于UITableViewController

代码语言:javascript
复制
class BackgroundTableView: UITableView {

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
[....]

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46118012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档