在启动屏幕中执行代码

时间:2014-12-24 20:45:26

标签: ios xcode user-interface xib

Xcode允许通过Interface Builder在.xib文件中创建启动屏幕。是否可以使用xib执行一些代码,就像在通常的视图控制器中一样?如果我们可以在app启动时设置不同的文本/图像/等,那就太棒了。

4 个答案:

答案 0 :(得分:40)

不,这是不可能的。

当显示启动屏幕时,您的应用将处于加载状态。

显示启动屏幕时,即使- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions也不会完全执行。

很明显,您无法访问自己的应用,因此此时您无法执行任何代码。

答案 1 :(得分:4)

我试图在这里做同样的事情。 :)

我真的很喜欢一些应用程序,每次应用程序启动时,它们都会动态发送一些动态问候文本和图像,例如“你今天看起来很棒!”,“今天是星期五,美好的一天”等等,这很可爱。

我做了一些搜索,下面是如何做到的: (我的代码是XCode 7,带有launchscreen.xib文件)

class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?
    var customizedLaunchScreenView: UIView?

    func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {

        // Override point for customization after application launch.
        application.statusBarHidden = true

        // customized launch screen
        if let window = self.window {
            self.customizedLaunchScreenView = UIView(frame: window.bounds)
            self.customizedLaunchScreenView?.backgroundColor = UIColor.greenColor()

            self.window?.makeKeyAndVisible()
            self.window?.addSubview(self.customizedLaunchScreenView!)
            self.window?.bringSubviewToFront(self.customizedLaunchScreenView!)
            UIView.animateWithDuration(1, delay: 2, options: .CurveEaseOut,
                                       animations: { () -> Void in
                                        self.customizedLaunchScreenView?.alpha = 0 },
                                       completion: { _ in
                                        self.customizedLaunchScreenView?.removeFromSuperview() })
        }

        return true
    }

// other stuff ...

}

只需在此处的 customizeLaunchScreenView 中执行您想要显示的内容,文本,图像,动画等。

在发布结束时,只需使用alpha值更改淡出此自定义UIView,然后将其完全删除。

那有多酷?我非常喜欢它!

希望它有所帮助。

答案 2 :(得分:0)

我也在努力实现这一目标。我尝试了以下内容,它延迟了几秒钟,但对我有用。

  • 在项目设置中创建并设置启动屏幕。
  • 使用自定义类(SplashViewController)创建一个视图控制器,并将其设置为故事板中的起始视图控制器。
  • 在其中添加容器视图并将其设置为全屏。
  • 将嵌入的segue设置为Storyboard Reference。
  • 选择Storyboard Reference并从属性检查器设置StoryBoard属性中的启动屏幕。
  • 在SplashViewController中执行任何操作(播放动画或会话检查等)并在完成后执行segue。

希望它有所帮助!

答案 3 :(得分:0)

语言:Swift 4

您好,这是使用xib启动屏幕的解决方案。

  1. 在项目中添加名为LaunchView的新类,然后在项目中将有一个新文件LaunchView.swift。

  2. 转到LauchImage.xib将类设置为LaunchView(这是您的新类)。

  3. 添加一些代码,并阅读一些信息,这些内容显示在LaunchView.swift中。这是我的代码,用于在启动屏幕上显示应用程序的版本。

class LaunchView: UIView {
    
    lazy var versionLabel: UILabel = {
        let label = Factory.label(style: LabelStyle.custom(font: .regular, size: 10, color: .other(ColorUtility.versionGray)), mutiLine: false, textAlignment: .center)
        label.text = "ver \(Constants.appVersion)"
        return label
    }()
    
    override init(frame: CGRect) {
        super.init(frame: frame)
        nibSetup()
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        nibSetup()
    }

    private func nibSetup() {
        addSubview(versionLabel)
        versionLabel.snp.makeConstraints { (make) in
            make.bottom.equalTo(safeAreaLayoutGuide.snp.bottom).offset(-6)
            make.centerX.equalToSuperview()
        }
    }
    
}