Как добавить анимацию на экран запуска в iOS 9.3 с помощью Objective c
Как сделать анимированный экран-заставку, как на картинке ниже в iOS 9.3.
3 ответа
По сути, вы не можете сделать анимированный заставки. Однако вы можете продублировать стартовый экран в раскадровке и сделать его контроллером входа (VC) вашего приложения. Затем, когда представление загружено, вы можете запустить анимацию. В конечном итоге у вас будет "анимированный экран-заставка".
Последовательность прогрессирует так:
Запускается приложение → отображать статический экран запуска → переходить к entry-VC, который не будет виден пользователю, потому что сцены выглядят одинаково → view-entry-VC загружается как анимация.
Таким образом, рассматривайте файл.xib вашего экрана запуска как первый кадр анимированного экрана запуска.
Экран запуска является статическим, и мы не можем выполнять какие-либо операции на экране запуска. Поэтому невозможно отобразить анимацию на экране запуска. но мы можем достичь этого одним способом. Сначала покажите экран статического запуска, а затем загрузите viewcontroller, на этом viewcontroller мы можем показать gif этой анимации. И после завершения анимационного цикла вызовите домашний экран приложения. Пожалуйста, обратитесь к следующему URL для справки. для достижения анимации на заставке
Вы можете проверить следующие ссылки для этого вида анимации:
https://github.com/okmr-d/App-Launching-like-Twitter
http://iosdevtips.co/post/88481653818/twitter-ios-app-bird-zoom-animation
В моем случае анимация заключалась в повороте изображения на экране запуска,
Анимированный экран запуска на YouTube.
Шаг 1. Я создал экран запуска с помощью UiImageViews, как показано ниже,
Шаг 2: Я снова создал тот же экран в моем StoryBoard, а также создал файл 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
}
}
}
Выше я сначала создал розетки, а затем использовал Timer() для периода анимации. По окончании периода времени анимации я перенаправляюсь на Home ViewController.
На главном экране я только что отобразил этикетку Limez, так что не беспокойтесь, если снова увидите ту же этикетку.
Вы не можете добавить анимацию на заставку, но вы можете получить тот же результат, создав контроллер представления с двумя следующими параметрами
- Добавьте изображение GIF на контроллере представления или
- Добавить видео в контроллер просмотра
Затем, при запуске приложения, появится статический экран-заставка приложения и перейдите к пользовательскому контроллеру представления, где анимация будет отображать либо GIF, либо видео. После завершения видео вы перейдете к целевому экрану приложения.