【问题标题】:how to add animation to launch screen in iOS 9.3 using Objective c如何使用 Objective c 在 iOS 9.3 中添加动画到启动屏幕
【发布时间】:2016-09-03 22:07:33
【问题描述】:

如何在 iOS 9.3 中制作如下图所示的动画启动画面。

【问题讨论】:

  • 您的问题是关于动画,还是如何使用“动画”故事板/xib 更改“静态”启动屏幕?
  • 您需要创建初始 VC 作为启动画面,并在一段时间间隔打开主页后添加 gif 图像
  • 感谢您的回复。好的。还有其他方法可以制作飞溅动画。
  • 这是一个非常酷的动画,但如果每次启动应用程序都必须等待 7 秒,它可能会很快变老。这是您的决定,但您可能应该权衡拥有这样的动画的成本与收益,或者何时使用它真的有意义。只是一个想法。

标签: ios objective-c iphone xcode


【解决方案1】:

基本上,您无法制作动画启动画面。 但是,您可以在故事板中复制启动屏幕并将其作为应用程序的入口视图控制器 (VC)。然后当视图被加载时,你就可以开始你的动画了。最后,您将获得一个“动画启动画面”。

顺序如下:

应用程序启动→显示静态启动屏幕→过渡到入口-VC,由于场景看起来相同,用户看不到入口-VC视图作为动画加载。

总之,将启动屏幕的 .xib 文件视为动画启动屏幕的第一帧。

【讨论】:

  • 我也是这样做的。及其工作。但是你能告诉我做同样事情的其他选择吗?
  • 我认为没有其他方法。启动屏幕是静态的,不能动画
【解决方案2】:
【解决方案3】:

您不能在启动画面中添加动画,但您可以通过使用以下两个选项创建视图控制器来产生相同的结果

  1. 在视图控制器上添加 gif 图像或
  2. 在视图控制器中添加视频

然后当应用启动时,应用静态闪屏将显示并导航到自定义视图控制器,其中动画将显示 gif 或视频。视频播放完毕后,您将导航到应用登陆屏幕。

【讨论】:

    【解决方案4】:

    启动屏幕是静态的,我们无法在启动屏幕上执行任何操作。所以不可能在启动屏幕上显示动画。但我们可以使用一种方法来实现这一点。 首先显示静态启动屏幕,然后加载视图控制器,在该视图控制器上我们可以显示该动画的 gif。动画循环完成后,调用应用程序的主屏幕。 请参考以下网址以供参考。 for achiving animation on splash screen

    【讨论】:

      【解决方案5】:

      在我的例子中,动画是在启动屏幕中旋转图像,
      Animated Launch Screen on YouTube

      第 1 步: 我使用 UiImageViews 创建了启动屏幕,如下所示,

      第 2 步: 我再次在我的故事板中创建了相同的屏幕,并为相同的视图创建了一个 viewController 文件,我将在其中为动画编写逻辑。我已将名称命名为“AnimatedlaunchScreenViewController”。 viewController 的代码如下,

      class AnimatedlaunchScreenViewController: UIViewController {
      
      @IBOutlet weak var limezTitleImageView: UIImageView!
      
      @IBOutlet weak var limezRoratingImageViewOutlet: UIImageView!
      var timer: Timer?
      var timeCount: Int = 0
      let animationSeconds: Int = 3
      override func viewDidLoad() {
          super.viewDidLoad()
          setTimerAndAnimateLaunchScreen()
      }
      
      //MARK: Animating flash Screen
      func setTimerAndAnimateLaunchScreen(){
          //Set Timer
          timer = Timer.scheduledTimer(timeInterval: 1, target: self, selector: #selector(checkForTimerAndRedirect), userInfo: nil, repeats: true)
          let rotation = CABasicAnimation(keyPath: "transform.rotation")
          rotation.fromValue = 0
          rotation.toValue = 2 * Double.pi
          rotation.duration = 1.1
          rotation.repeatCount = Float.infinity
          self.limezRoratingImageViewOutlet.layer.add(rotation, forKey: "Spin")
      }
      
      @objc func checkForTimerAndRedirect(){
          if timeCount == animationSeconds{
              //Redirect to LogIn or HomePage
              timer?.invalidate()
              timer = nil
      
              let storyboard = UIStoryboard(name: "Main", bundle: nil)
              let appDelegate = UIApplication.shared.delegate as! AppDelegate
              let homeVC = storyboard.instantiateViewController(withIdentifier: "HomePageViewController") as! HomePageViewController
              //Below's navigationController is useful if u want NavigationController
              let navigationController = UINavigationController(rootViewController: homeVC)
              appDelegate.window!.rootViewController = homeVC
          }else{
              //Increment the counter
              timeCount += 1
          }
      }
      

      }

      在上面我首先创建了 Outlets,然后我在动画期间使用了 Timer()。动画时间段完成后,我已重定向到 Home ViewController。

      我刚刚在主屏幕上显示了 Limez 标签,所以不用担心再次看到相同的标签。

      【讨论】:

      • 视频链接已过期
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-06-01
      • 2021-08-04
      • 1970-01-01
      • 1970-01-01
      • 2012-12-06
      相关资源
      最近更新 更多