#swift #lottie
Вопрос:
По сути, в настоящее время я делаю следующее ниже, чтобы отобразить квадрат поверх сеанса захвата, но я хотел бы заменить квадрат анимацией Лотти — возникли проблемы с пониманием того, как я могу разместить и воспроизвести анимацию вместо отображения статического квадрата:
captureSession.startRunning()
let scannerOverlayPreviewLayer = ScannerOverlayPreviewLayer(session: captureSession)
scannerOverlayPreviewLayer.frame = self.view.bounds
scannerOverlayPreviewLayer.maskSize = CGSize(width: 200, height: 200)
scannerOverlayPreviewLayer.backgroundColor = UIColor.black.withAlphaComponent(0.5).cgColor
scannerOverlayPreviewLayer.videoGravity = .resizeAspectFill
self.view.layer.addSublayer(scannerOverlayPreviewLayer)
Анимация:
private var animationView: AnimationView?
animationView = .init(name: "scan")
animationView!.frame = view.bounds
animationView!.contentMode = .scaleAspectFit
animationView!.loopMode = .loop
animationView!.animationSpeed = 0.5
view.addSubview(animationView!)
animationView!.play()
Я намерен разместить анимацию в центре экрана. Размер анимации-ширина: 200, высота: 200, а также.
Ответ №1:
Вы пытаетесь поместить Лотти в центр экрана?
Я рекомендую вам сначала сделать вид посередине, а затем разместить в нем Лотти.
Сначала создайте представление высотой 200 и шириной 200 в середине экрана.
let myView = UIView()
self.view.addSubview(myView)
myView.translatesAutoresizingMaskIntoConstraints = false
myView.centerXAnchor.constraint(equalTo: self.view.centerXAnchor).isActive = true
myView.centerYAnchor.constraint(equalTo: self.view.centerYAnchor).isActive = true
myView.widthAnchor.constraint(equalToConstant: 200).isActive = true
myView.heightAnchor.constraint(equalToConstant: 200).isActive = true
Затем вставьте представление анимации в созданное вами представление. Ты можешь сделать то же самое с Лотти.
let animationView = AnimationView(name: "scan")
animationView.frame = CGRect(x: 0, y: 0, width: myView.bounds.width, height: myView.bounds.height)
Комментарии:
1. Он не отображается в центре экрана — см. Мой пример того, что работает выше self.view. layer.addSublayer..по какой-то причине это работает. Есть какие-нибудь мысли?
2. @MarkLyson Вы пробовали написать этот код? MyView.addSubview(анимационный вид)