繁体   English   中英

是否可以在 Swift 的启动屏幕中显示额外的图像和按钮

[英]Is it possible to show extra image and button in Launch Screen in Swift

一直以来,如果我打开应用程序,我只需要显示带有 appname 的启动屏幕,但如果没有互联网,那么我需要显示带有额外图像和按钮的启动屏幕,例如这个应用程序启动 screenImage 这怎么可能?

对于互联网检查,我正在使用Reachability

如果我在 loginscreen 中编写以下代码,那么会在 loginscreen 中发出警报,但如何在启动屏幕中显示如上图所示:

在 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) {
        $0.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
    
}
}
}

我应该在哪里为启动屏幕编写代码? 如果没有互联网,是否可以在启动屏幕中添加额外的图像和按钮,或者我应该创建单独的视图控件来显示上述图像。 请建议并解释我的概念。

这种设计有一个技巧。 显然,您可以在启动屏幕中添加视图,但不能将某些代码绑定到这些视图(即 UIButton 等)。

因此,让我们深入了解这个技巧。

诀窍是:您可以在启动屏幕之后添加一个 controller,这意味着 controller 正是您应用程序的第一个屏幕。 然后,controller(我们将其命名为RootViewController)的 UI 设计将与您的启动屏幕的设计完全相同。

这会给用户一种他们仍在启动屏幕上的印象。 从那个RootViewController ,做你的可达性事情。

希望这可以帮助!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM