是否可以在 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 事情。

希望对您有所帮助!