如何防止 'UIColor' 在 ios 的 ionic/react v5 中没有成员 'systemBackground' ` 和 'UIStatusBarStyle' 没有成员 'darkContent'?
How to prevent 'UIColor' has no member 'systemBackground' ` and 'UIStatusBarStyle' has no member 'darkContent' in ionic/react v5 for ios?
使用 Ionic React v 5.3.0 编写一个简单的应用程序,没有插件(还)
离子构建后,Xcode报告swift构建错误:
Type 'UIStatusBarStyle' has no member 'darkContent' ios
swift v 4.2 和 swift v 5,ios 部署目标 8、9、10 和 11
会发生这种情况
我尝试按照此处的说明删除并重新生成 node_modules
和 ios
目录来解决问题:https://ionicframework.com/docs/troubleshooting/native
仍然看到 xcode 中的问题,带有构建时警告和 4 个 Swift 编译错误。
其中两个错误是 Type 'UIColor' has no member 'systemBackground'
在 CapBridgeViewcontroller.swift 中发现的 Pods>Development Pods> Capacitor > Plugins
if let backgroundColor = (bridge!.config.getValue("ios.backgroundColor") as? String) ?? (bridge!.config.getValue("backgroundColor") as? String) {
webView?.backgroundColor = UIColor(fromHex: backgroundColor)
webView?.scrollView.backgroundColor = UIColor(fromHex: backgroundColor)
} else if #available(iOS 13, *) {
// Use the system background colors if background is not set by user
webView?.backgroundColor = UIColor.systemBackground
webView?.scrollView.backgroundColor = UIColor.systemBackground
}
另外两个错误是:
Type 'UIStatusBarStyle' has no member 'darkContent'
在 statusBar.swift
中找到
public func setStatusBarDefaults() {
if let plist = Bundle.main.infoDictionary {
if let statusBarHidden = plist["UIStatusBarHidden"] as? Bool {
if (statusBarHidden) {
self.isStatusBarVisible = false
}
}
if let statusBarStyle = plist["UIStatusBarStyle"] as? String {
if (statusBarStyle == "UIStatusBarStyleDarkContent") {
if #available(iOS 13.0, *) {
self.statusBarStyle = .darkContent
} else {
self.statusBarStyle = .default
}
} else if (statusBarStyle != "UIStatusBarStyleDefault") {
self.statusBarStyle = .lightContent
}
}
}
}
和
@objc func setStyle(_ call: CAPPluginCall) {
let options = call.options!
if let style = options["style"] as? String {
if style == "DARK" {
bridge.setStatusBarStyle(.lightContent)
} else if style == "LIGHT" {
if #available(iOS 13.0, *) {
bridge.setStatusBarStyle(.darkContent)
} else {
bridge.setStatusBarStyle(.default)
}
}
}
call.success([:])
}
我期望的是我可以从 ionic cli 构建我的应用程序,而不必在每次构建时都修改 swift 代码。我可以在我的离子项目中添加一个设置来防止这个错误吗?
使用 Ionic React v 5.3.0 编写一个简单的应用程序,没有插件(还)
离子构建后,Xcode报告swift构建错误:
Type 'UIStatusBarStyle' has no member 'darkContent' ios
swift v 4.2 和 swift v 5,ios 部署目标 8、9、10 和 11
我尝试按照此处的说明删除并重新生成 node_modules
和 ios
目录来解决问题:https://ionicframework.com/docs/troubleshooting/native
仍然看到 xcode 中的问题,带有构建时警告和 4 个 Swift 编译错误。
其中两个错误是 Type 'UIColor' has no member 'systemBackground'
在 CapBridgeViewcontroller.swift 中发现的 Pods>Development Pods> Capacitor > Plugins
if let backgroundColor = (bridge!.config.getValue("ios.backgroundColor") as? String) ?? (bridge!.config.getValue("backgroundColor") as? String) {
webView?.backgroundColor = UIColor(fromHex: backgroundColor)
webView?.scrollView.backgroundColor = UIColor(fromHex: backgroundColor)
} else if #available(iOS 13, *) {
// Use the system background colors if background is not set by user
webView?.backgroundColor = UIColor.systemBackground
webView?.scrollView.backgroundColor = UIColor.systemBackground
}
另外两个错误是:
Type 'UIStatusBarStyle' has no member 'darkContent'
在 statusBar.swift
public func setStatusBarDefaults() {
if let plist = Bundle.main.infoDictionary {
if let statusBarHidden = plist["UIStatusBarHidden"] as? Bool {
if (statusBarHidden) {
self.isStatusBarVisible = false
}
}
if let statusBarStyle = plist["UIStatusBarStyle"] as? String {
if (statusBarStyle == "UIStatusBarStyleDarkContent") {
if #available(iOS 13.0, *) {
self.statusBarStyle = .darkContent
} else {
self.statusBarStyle = .default
}
} else if (statusBarStyle != "UIStatusBarStyleDefault") {
self.statusBarStyle = .lightContent
}
}
}
}
和
@objc func setStyle(_ call: CAPPluginCall) {
let options = call.options!
if let style = options["style"] as? String {
if style == "DARK" {
bridge.setStatusBarStyle(.lightContent)
} else if style == "LIGHT" {
if #available(iOS 13.0, *) {
bridge.setStatusBarStyle(.darkContent)
} else {
bridge.setStatusBarStyle(.default)
}
}
}
call.success([:])
}
我期望的是我可以从 ionic cli 构建我的应用程序,而不必在每次构建时都修改 swift 代码。我可以在我的离子项目中添加一个设置来防止这个错误吗?