美文网首页
[iOS]Swift-启动页动画

[iOS]Swift-启动页动画

作者: 我不是小兵 | 来源:发表于2017-10-11 19:52 被阅读0次

从开发者角度讲app启动当然越快越好,但是有时候总有些奇葩需求。比如,让启动页故意延时、在启动页上加个动画等等。下面我们来实现一个启动页动画。##

启动页动画

  1. 创建一个启动页文件

a: 创建iOS工程的时候默认会有个LaunchScreen.storyboard文件作为静态启动页,这里我们不用它,我们创建一个LaunchScreen.xib文件作为静态启动页。这里就不用详细说明怎么创建xib了。。。注意一下命名!!!

b:创建好LaunchScreen.xib之后,在文件中添加一个UIImageView设置好你的启动页图片。

c:删除LaunchScreen.storyboard文件

此时编译运行你就可以看到静态启动页了

  1. 代码相关

思路: 在苹果粑粑的设计中,启动页应该就只是需要一张静态图就ok了,毕竟对用户使用来说,app启动越快越好。因此没有常规的方法实现启动页动画。我的想法是在启动后获取到启动页的内容然后将其填充到一个 UIViewController 中,再构建相关动画。下面说具体步骤

a: 创建 UIViewController 文件

//获取启动页文件名
lazy var launchName : String = {
        let tempLaunchName = Bundle.main.infoDictionary!["UILaunchStoryboardName"] as! String
        return tempLaunchName
    }()
//将启动页内容,并生成UIImageView
lazy var launchView : UIImageView = {
        let viewCopy = NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: self.view)) as! UIView
        let window = UIApplication.shared.keyWindow
        window?.addSubview(viewCopy)        
UIGraphicsBeginImageContextWithOptions(UIScreen.main.bounds.size, true, 0.0)
        viewCopy.layer.render(in: UIGraphicsGetCurrentContext()!)
        viewCopy.removeFromSuperview()
        let image = UIGraphicsGetImageFromCurrentImageContext()
        UIGraphicsEndImageContext()
        
        let launchView = UIImageView.init(image: image)
        launchView.frame = UIScreen.main.bounds
        return launchView
    }()
//构建view,并将launchView添加进去
override func viewDidLoad() {
        super.viewDidLoad()
        NSKeyedArchiver.archivedData(withRootObject: self.view)
        let app : UIApplication = UIApplication.shared;
        self.view = UINib.init(nibName: self.launchName, bundle: nil).instantiate(withOwner: self, options: nil).first as! UIView;
        self.view.layoutIfNeeded()
        app.keyWindow?.addSubview(self.launchView)
    }
override func viewWillAppear(_ animated: Bool) {
        super.viewWillAppear(animated)
         //TODO 启动页相关动画
        DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2.5) {
        //动画结束执行相关跳转逻辑
            self.goToNextPage()
        }
    }
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
        if #available(iOS 9.0, *) {
        }else{
            self.window = UIWindow.init(frame: UIScreen.main.bounds)
        }
        let launchViewController = XBLaunchViewController.init();
        self.window?.rootViewController = launchViewController;
        self.window?.makeKeyAndVisible()
        return true
    }

相关文章

  • [iOS]Swift-启动页动画

    从开发者角度讲app启动当然越快越好,但是有时候总有些奇葩需求。比如,让启动页故意延时、在启动页上加个动画等等。下...

  • iOS适配启动页

    iOS适配启动页 iOS适配启动页

  • iOS 延迟启动页以及启动页动画

    1、单纯的延长启动页 2、启动页动画

  • iOS代码添加视图约束

    项目要做这样一个效果的启动页。 考虑到版本号是会不断变更的,因此采用动画效果启动页,让版本号动态加载iOS启动页动...

  • iOS开发_启动页动画

    【作者前言】:13年入圈,分享些本人工作中遇到的点点滴滴那些事儿,17年刚开始写博客,高手勿喷!以分享交流为主,欢...

  • iOS 启动页带动画

    APP在启动的时候有的是静态图有的是动图,那怎么设置动图呢?本文主要介绍从网络上获取动图,这样可以只更改服务器上的...

  • iOS启动页动画效果

    最近项目中要在启动页增加版本号,因为版本号是不断的改变,所以要动态实现把它加到启动页上;在XCode上面配置的La...

  • Flutter 启动页

    启动页 IOS启动页,在ios/Runner/Assets.xcassets/LaunchImage.images...

  • iOS LaunchImage启动页 标准尺寸

    iOS LaunchImage启动页 标准尺寸

  • iOS 启动页动画OC+Swift

    原理是在keywindow上加一个imgeview:demoOC 代码 SWift代码

网友评论

      本文标题: [iOS]Swift-启动页动画

      本文链接:https://www.haomeiwen.com/subject/denwyxtx.html