是否可以在 Swift 中的启动屏幕中显示额外的图像和按钮
Is it possible to show extra image and button in Launch Screen in Swift
一直以来,如果我打开应用程序,我只需要显示带有应用程序名称的启动屏幕,但如果没有互联网,则我需要显示带有额外图像和按钮的启动屏幕,例如 this app launch screenImage。这怎么可能?
我正在使用 Reachability
进行互联网检查
如果我在登录屏幕中编写以下代码,那么登录屏幕会出现警报,但如何在启动屏幕中显示如上图所示:
在 LoginScreen 中尝试过的代码:
import UIKit
import SystemConfiguration
class LoginViewController: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
internetCheck()
}
func internetCheck(){
if Reachability.isConnectedToNetwork(){
Constants.printLog(message: "Internet Connection Available!")
}else{
let alert = UIAlertController(title: "Alert", message: "NO internet", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
return
}
}
public class Reachability {
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
[=11=].withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
}
}
var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0)
if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
return false
}
// Working for Cellular and WIFI
let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
let ret = (isReachable && !needsConnection)
return ret
}
}
}
我应该在哪里编写启动屏幕的代码?
如果没有互联网,是否可以在启动屏幕中添加额外的图像和按钮,或者我是否应该创建单独的视图控件来显示上面提到的图像。请给我建议和解释这个概念。
这种设计是有技巧的。显然,您可以在启动屏幕中添加视图,但不能将一些代码绑定到这些视图(即 UI 按钮等)。
所以让我们深入了解 技巧。
诀窍是:您可以在启动屏幕之后添加一个控制器,这意味着该控制器恰好是您应用程序的第一个屏幕。然后该控制器的 UI 设计(我们将其命名为 RootViewController) 将与启动屏幕的设计完全相同。
这会给用户留下他们仍在启动屏幕上的印象。从那个 RootViewController,做你的 Reachability 事情。
希望对您有所帮助!
一直以来,如果我打开应用程序,我只需要显示带有应用程序名称的启动屏幕,但如果没有互联网,则我需要显示带有额外图像和按钮的启动屏幕,例如 this app launch screenImage。这怎么可能?
我正在使用 Reachability
如果我在登录屏幕中编写以下代码,那么登录屏幕会出现警报,但如何在启动屏幕中显示如上图所示:
在 LoginScreen 中尝试过的代码:
import UIKit
import SystemConfiguration
class LoginViewController: UIViewController, UITextFieldDelegate {
override func viewDidLoad() {
super.viewDidLoad()
internetCheck()
}
func internetCheck(){
if Reachability.isConnectedToNetwork(){
Constants.printLog(message: "Internet Connection Available!")
}else{
let alert = UIAlertController(title: "Alert", message: "NO internet", preferredStyle: UIAlertController.Style.alert)
alert.addAction(UIAlertAction(title: "Click", style: UIAlertAction.Style.default, handler: nil))
self.present(alert, animated: true, completion: nil)
return
}
}
public class Reachability {
class func isConnectedToNetwork() -> Bool {
var zeroAddress = sockaddr_in(sin_len: 0, sin_family: 0, sin_port: 0, sin_addr: in_addr(s_addr: 0), sin_zero: (0, 0, 0, 0, 0, 0, 0, 0))
zeroAddress.sin_len = UInt8(MemoryLayout.size(ofValue: zeroAddress))
zeroAddress.sin_family = sa_family_t(AF_INET)
let defaultRouteReachability = withUnsafePointer(to: &zeroAddress) {
[=11=].withMemoryRebound(to: sockaddr.self, capacity: 1) {zeroSockAddress in
SCNetworkReachabilityCreateWithAddress(nil, zeroSockAddress)
}
}
var flags: SCNetworkReachabilityFlags = SCNetworkReachabilityFlags(rawValue: 0)
if SCNetworkReachabilityGetFlags(defaultRouteReachability!, &flags) == false {
return false
}
// Working for Cellular and WIFI
let isReachable = (flags.rawValue & UInt32(kSCNetworkFlagsReachable)) != 0
let needsConnection = (flags.rawValue & UInt32(kSCNetworkFlagsConnectionRequired)) != 0
let ret = (isReachable && !needsConnection)
return ret
}
}
}
我应该在哪里编写启动屏幕的代码? 如果没有互联网,是否可以在启动屏幕中添加额外的图像和按钮,或者我是否应该创建单独的视图控件来显示上面提到的图像。请给我建议和解释这个概念。
这种设计是有技巧的。显然,您可以在启动屏幕中添加视图,但不能将一些代码绑定到这些视图(即 UI 按钮等)。
所以让我们深入了解 技巧。
诀窍是:您可以在启动屏幕之后添加一个控制器,这意味着该控制器恰好是您应用程序的第一个屏幕。然后该控制器的 UI 设计(我们将其命名为 RootViewController) 将与启动屏幕的设计完全相同。
这会给用户留下他们仍在启动屏幕上的印象。从那个 RootViewController,做你的 Reachability 事情。
希望对您有所帮助!