我試圖使用UIAppearance來配置我的Apps的樣式。它可以和UIView或UIButton這樣的UI組件完美協同工作,但它不適用於UIViewControllers。我想這樣做:如何使用UIAppearance設置ViewController的backgroundColor
let appearance = FirstViewController.appearance()
有沒有辦法使用UIAppearance與ViewControllers?
我試圖使用UIAppearance來配置我的Apps的樣式。它可以和UIView或UIButton這樣的UI組件完美協同工作,但它不適用於UIViewControllers。我想這樣做:如何使用UIAppearance設置ViewController的backgroundColor
let appearance = FirstViewController.appearance()
有沒有辦法使用UIAppearance與ViewControllers?
您不會將背景顏色設置爲viewController
,您將其設置在viewControllers
view
上。如果您使用UIView.appearance().backgroundColor
,您將更改所有視圖的背景。
所以你的問題的答案是你不能使用UIAppearance
來改變viewControllers
背景顏色。
你可以做的是:
class FirstViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .red
}
}
然後使用檢查你的故事板來改變UIViewController
到FirstViewController
。
這不會影響所有視圖,而不僅僅是視圖控制器視圖? – rmaddy
@rmaddy,我還不夠清楚,認爲這很明顯,但現在已經澄清了答案。感謝您指出。 –
@rmaddy這隻影響視圖控制器,在Storyboard檢查器中,其視圖控制器的類已分配給FirstViewController或FirstViewController的子類。 其中一個用法是擴展默認的'UINavigationController'並將背景設置爲白色。所以右上角不會顯示深灰色的閃光。 –
正如你可以在UIAppearance
協議documentation看到,只有兩班採用它在默認情況下,UIView
和UIBarItem
,因此UIViewController
類沒有appearance()
功能。
您可以通過實現協議所要求的方法擴展UIViewController
,或者可能是一個更容易的解決辦法是創建自己的UIViewController
子類,它提供了類view.backgroundColor
屬性的默認顏色,並讓所有的ViewControllers繼承這個類直接代替UIViewController
。
你可能需要視圖控制器視圖,只是一個猜測。 –
'UIViewController'沒有'appearnace()' –
UIViewcontroller不能擴展UIAppearnce類,這是你不能使用它的方式。 UIView擴展了UIAppearnce類。 – Hiren