2017-09-08 68 views
1

我試圖使用UIAppearance來配置我的Apps的樣式。它可以和UIView或UIButton這樣的UI組件完美協同工作,但它不適用於UIViewControllers。我想這樣做:如何使用UIAppearance設置ViewController的backgroundColor

let appearance = FirstViewController.appearance() 

有沒有辦法使用UIAppearance與ViewControllers?

+0

你可能需要視圖控制器視圖,只是一個猜測。 –

+0

'UIViewController'沒有'appearnace()' –

+0

UIViewcontroller不能擴展UIAppearnce類,這是你不能使用它的方式。 UIView擴展了UIAppearnce類。 – Hiren

回答

2

您不會將背景顏色設置爲viewController,您將其設置在viewControllersview上。如果您使用UIView.appearance().backgroundColor,您將更改所有視圖的背景。

所以你的問題的答案是你不能使用UIAppearance來改變viewControllers背景顏色。

你可以做的是:

class FirstViewController: UIViewController { 
    override func viewDidLoad() { 
     super.viewDidLoad() 
     view.backgroundColor = .red 
    } 
} 

然後使用檢查你的故事板來改變UIViewControllerFirstViewController

+2

這不會影響所有視圖,而不僅僅是視圖控制器視圖? – rmaddy

+0

@rmaddy,我還不夠清楚,認爲這很明顯,但現在已經澄清了答案。感謝您指出。 –

+0

@rmaddy這隻影響視圖控制器,在Storyboard檢查器中,其視圖控制器的類已分配給FirstViewController或FirstViewController的子類。 其中一個用法是擴展默認的'UINavigationController'並將背景設置爲白色。所以右上角不會顯示深灰色的閃光。 –

2

正如你可以在UIAppearance協議documentation看到,只有兩班採用它在默認情況下,UIViewUIBarItem,因此UIViewController類沒有appearance()功能。

您可以通過實現協議所要求的方法擴展UIViewController,或者可能是一個更容易的解決辦法是創建自己的UIViewController子類,它提供了類view.backgroundColor屬性的默認顏色,並讓所有的ViewControllers繼承這個類直接代替UIViewController

相關問題