Разработка
Анимируем представления UIKit с помощью анимации SwiftUI
API анимации SwiftUI упрощает определение анимаций и управление их временем и повторением.
В iOS 18 появилась новая мощная функция: возможность анимировать представления UIKit с помощью типов анимации SwiftUI. Это еще больше сокращает разрыв между двумя фреймворками, позволяя нам привнести гибкость и выразительность системы анимации SwiftUI в проекты на базе UIKit.
Давайте рассмотрим простой пример, чтобы увидеть, как это работает на практике. Мы будем анимировать UIImageView, который непрерывно увеличивается и уменьшается в размерах.
Вот начальная настройка:
class ViewController: UIViewController { private var animatingView: UIView? override func viewDidLoad() { super.viewDidLoad() animatingView = UIImageView( image: UIImage(systemName: "volleyball.fill") ) animatingView?.tintColor = .systemPink animatingView?.contentMode = .scaleAspectFit animatingView?.frame = CGRect( origin: .init(x: 0, y: 0), size: .init(width: 80, height: 80) ) view.addSubview(animatingView!) animatingView?.center = view.center } }
Далее мы определим логику анимации. Анимация будет начинаться, когда представление появится на экране, поэтому мы реализуем ее в методе viewDidAppear()
. Используя SwiftUI Animation API, мы создадим линейную анимацию длительностью 1.3 секунды, которая будет повторяться бесконечно. Мы применим эту анимацию к представлению изображения с помощью нового метода UIView.animate()
, который принимает в качестве аргумента анимацию SwiftUI Animation.
class ViewController: UIViewController { ... override func viewDidAppear(_ animated: Bool) { super.viewDidAppear(animated) self.startAnimating() } private func startAnimating() { let animation = SwiftUI.Animation .linear(duration: 1.3) .repeatForever() UIView.animate(animation) { [weak self] in self?.animatingView?.transform = .init(scaleX: 2, y: 2) } } }
Наконец, мы можем просмотреть анимацию прямо в Xcode, чтобы убедиться, что все работает как надо:
#Preview { ViewController() }
Когда приложение запускается, иконка волейбольного мяча плавно увеличивается в два раза и этот эффект постоянно повторяется.
API анимации SwiftUI упрощает определение анимаций и управление их временем и повторением. Используя анимации SwiftUI в UIKit, мы можем создавать более плавные и согласованные анимации во всем нашем приложении, улучшая общее впечатление пользователей.
Если у вас есть старые приложения для iOS и вы хотите улучшить их с помощью современных функций SwiftUI, ознакомьтесь с книгой «Интеграция SwiftUI в приложения UIKit». В ней содержится подробное руководство по постепенному внедрению SwiftUI в ваши UIKit-проекты. Кроме того, если вы хотите усовершенствовать свои навыки программирования на Swift, последняя книга Swift Gems предлагает более сотни продвинутых советов и приемов, включая оптимизацию коллекций, работу со строками, освоение асинхронного программирования и отладку, чтобы поднять ваш Swift-код на новый уровень.