UIViewController 的扩展不工作更改 UIStatusBarStyle In Swift
extension for UIViewController is not Working change UIStatusBarStyle In Swift
我正在尝试为 UIViewController 创建 extension 但它不起作用。我正在更改状态栏颜色以使用扩展程序,但我无法获得成功。但是没有扩展是有效的。我是 Extension 的新手,请帮助我。
我的目标是 我不想在每个视图控制器上创建功能,减少可重用性
创建扩展程序无效
extension UIViewController {
func preferredStatusBarStyle_change() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
}
//!!!!!!!!!view1
override func viewDidLoad() {
super.viewDidLoad()
//preferredStatusBarStyle();
self.preferredStatusBarStyle_change();
}
//!!!!!!!!!view2
override func viewDidLoad() {
super.viewDidLoad()
//preferredStatusBarStyle();
self.preferredStatusBarStyle_change();
}
没有扩展是工作
View1
override func viewDidLoad() {
super.viewDidLoad()
preferredStatusBarStyle();
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
View2
override func viewDidLoad() {
super.viewDidLoad()
preferredStatusBarStyle();
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
帮助我尝试理解可重用性和扩展
它不起作用,因为:
Viewcontroller 将调用 preferredStatusBarStyle()
来定义 statusbar
。实际上你在 viewDidload
中删除了 preferredStatusBarStyle();
,你的控制器仍然有效。
所以在你的情况下你可以这样解决:
你创建了一个 UIViewController
的子class,也许它的名字是:BaseViewController
并且它这个 class 你把:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
现在您从 BaseViewController
状态栏继承的所有 ViewController
将始终 .LightContent
您不需要将此代码放在每个位置之上。
演示:Demo
我正在尝试为 UIViewController 创建 extension 但它不起作用。我正在更改状态栏颜色以使用扩展程序,但我无法获得成功。但是没有扩展是有效的。我是 Extension 的新手,请帮助我。 我的目标是 我不想在每个视图控制器上创建功能,减少可重用性 创建扩展程序无效
extension UIViewController {
func preferredStatusBarStyle_change() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
}
//!!!!!!!!!view1
override func viewDidLoad() {
super.viewDidLoad()
//preferredStatusBarStyle();
self.preferredStatusBarStyle_change();
}
//!!!!!!!!!view2
override func viewDidLoad() {
super.viewDidLoad()
//preferredStatusBarStyle();
self.preferredStatusBarStyle_change();
}
没有扩展是工作
View1
override func viewDidLoad() {
super.viewDidLoad()
preferredStatusBarStyle();
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
View2
override func viewDidLoad() {
super.viewDidLoad()
preferredStatusBarStyle();
}
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
帮助我尝试理解可重用性和扩展
它不起作用,因为:
Viewcontroller 将调用 preferredStatusBarStyle()
来定义 statusbar
。实际上你在 viewDidload
中删除了 preferredStatusBarStyle();
,你的控制器仍然有效。
所以在你的情况下你可以这样解决:
你创建了一个 UIViewController
的子class,也许它的名字是:BaseViewController
并且它这个 class 你把:
override func preferredStatusBarStyle() -> UIStatusBarStyle {
return UIStatusBarStyle.LightContent
}
现在您从 BaseViewController
状态栏继承的所有 ViewController
将始终 .LightContent
您不需要将此代码放在每个位置之上。
演示:Demo