美文网首页
iOS - 为你的启动页添加动画

iOS - 为你的启动页添加动画

作者: 倾兰特 | 来源:发表于2017-06-19 17:15 被阅读1181次

本文为参考学习的文章,在阅读这位作者的源码之后学习到的一个小方法。

解决方案

在 iOS 中,为应用设置启动页非常简单。按照 Apple 的意思,启动页应当尽可能的与首屏相似,并且尽可能的避免使用启动动画。但是有时候我们想让启动页稍微丰富一些,为它添加一些事情。

在之前,我的做法是(OC)

在 AppDelegate 中的

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions;

方法中添加动画效果,具体实现如下:

  • 获取 LaunchScreen 中的 view(这需要你的应用启动页设置为 LaunchScreen)
UIViewController *viewController = [[UIStoryboard storyboardWithName:@"LaunchScreen" bundle:nil] instantiateViewControllerWithIdentifier:@"LaunchScreen"];
UIView *launchView = viewController.view;
  • 将 view 添加到 window 上
[self.window addSubview:launchView];
  • 实现 view 的动画
[UIView animateWithDuration:1.3f delay:0.1f options:UIViewAnimationOptionBeginFromCurrentState animations:^{
    launchView.alpha = 0.0f;
    launchView.layer.transform = CATransform3DScale(CATransform3DIdentity, 1.3f, 1.3f, 1.0f);
} completion:^(BOOL finished) {
    [launchView removeFromSuperview];
}];

这里将 view 放大显示并且同时消失,记得在动画结束时将 view 移除掉。

新的小方法是(swift)

上述方法将启动页的 ViewController 拿到,所以可以将其上的多个控件一起处理,形成比较和谐的效果。但是也有很多启动页都由一张图片构成,所以在这里,我们可以直接拿到图片,进行处理。

  • 一个获取启动图片的函数(这谜一般的对齐)

func launchImage() -> UIImage {
        
        var launchImage     : UIImage!
        var viewOrientation : String!
        let viewSize        = UIScreen.main.bounds.size
        let orientation     = UIApplication.shared.statusBarOrientation
        //  获取屏幕方向
        if orientation == .landscapeLeft || orientation == .landscapeRight {
            viewOrientation = "Landscape"
        } else {
            viewOrientation = "Portrait"
        }
        let imagesInfo = Bundle.main.infoDictionary!["UILaunchImages"]
            for dic: Dictionary<String, String> in imagesInfo as! Array {
            
            let imageSize = CGSizeFromString(dic["UILaunchImageSize"]!)
            if imageSize.equalTo(viewSize) && viewOrientation == dic["UILaunchImageOrientation"]! as String {
                
                launchImage = UIImage(named: dic["UILaunchImageName"]!)
            }
        }
        return launchImage
    }

在这里,获取的是 Assets 中的启动页。

  • 在 viewDidLoad() 中添加 UIImageView,设置图片

override func viewDidLoad() {
        super.viewDidLoad()

        //  添加启动页
        let launchImageView = UIImageView(frame: self.view.bounds)
        launchImageView.image = self.launchImage()
        view.addSubview(launchImageView)

        UIView.animate(withDuration: 1, delay: 1, options: .curveEaseIn, animations: {
                
            launchImageView.transform = CGAffineTransform(scaleX: 1.5, y: 1.5)
            launchImageView.alpha = 0
        }) { (finished) in
            
            launchImageView.removeFromSuperview()
        }
    }

  • 动画处理,同上。

遇到的问题

在处理第二种方案时,发现这个动画只能加在 Initial View Controller 中,否则动画没有效果。

总结

其实在 LaunchScreen 配置启动页较为简便,只需要一个图片即可,并且可以控制各个控件,相对灵活。但是刚刚打开之前的代码运行时发现一个问题。。。各取所需吧。

相关文章

  • iOS - 为你的启动页添加动画

    本文为参考学习的文章,在阅读这位作者的源码之后学习到的一个小方法。 解决方案 在 iOS 中,为应用设置启动页非常...

  • iOS适配启动页

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

  • quick cocos2d-lua打包安卓apk添加启动页

    1.新建一个添加闪屏动画的启动页java类,例如:startActivity.java 添加到游戏进入的启动的包类...

  • iOS代码添加视图约束

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

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

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

  • ios 启动添加广告页

    由于ios启动页是有苹果的规范的,所以动态的修改启动页可能会有被拒的风险。关于这一点我没试过,如果想做是可以做的,...

  • iOS开发_启动页动画

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

  • iOS 启动页带动画

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

  • iOS启动页动画效果

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

  • Flutter 启动页

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

网友评论

      本文标题:iOS - 为你的启动页添加动画

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