Я запускаю анимацию, в которой на экране запуска отображается изображение.
Затем он переходит в вид, расположенный над основной раскадровкой, который показывает раскадровку под ней после завершения анимации.
Однако изображение в наложенном виде не центрируется. Как бы я это сделал?
Я предоставил код и изображения ниже, чтобы показать разницу. Это код в классе ViewController в раскадровке.
import UIKit
class ViewController: UIViewController {
let arImage = UIImageView(image: UIImage(named: "CN")!)
let splashView = UIView()
override func viewDidLoad() {
super.viewDidLoad()
splashView.backgroundColor = UIColor(red: 255/255, green: 53/255, blue: 79/255, alpha: 1.0)
// Colour of View
view.addSubview(splashView)
splashView.frame = CGRect(x: 0, y: 0, width: view.bounds.width, height: view.bounds.height)
// View Bounds
arImage.contentMode = .scaleAspectFit
// Aspect Fill Of Image
splashView.addSubview(arImage)
arImage.frame = CGRect(x: splashView.frame.midX - 50, y: splashView.frame.midX - 50, width: 160, height: 160)
// image sizing (not placement)
}
override func viewDidAppear(_ animated: Bool) {
DispatchQueue.main.asyncAfter(deadline: DispatchTime.now() + 2){
self.scaleDownAnimation()
}
}
func scaleDownAnimation(){
UIView.animate(withDuration: 0.5, animations: {
self.arImage.transform = CGAffineTransform(scaleX: 0.5, y: 0.5)
// shrinks
}) { ( success) in
self.scaleUpAnimation()
}
}
func scaleUpAnimation() {
UIView.animate(withDuration: 0.35, delay: 0.1, options: .curveEaseIn, animations: {
self.arImage.transform = CGAffineTransform(scaleX: 5, y: 5)
}) { ( success) in
self.removeSplashScreen()
// expands
}
}
func removeSplashScreen() {
splashView.removeFromSuperview()
}
}
Вот изображения, показывающие разницу между экраном запуска и видом:
LaunchScreen Непосредственно перед анимацией
Спасибо