Connect with us

Разработка

Анимируем представления 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()
}

Когда приложение запускается, иконка волейбольного мяча плавно увеличивается в два раза и этот эффект постоянно повторяется.

Анимируем представления UIKit с помощью анимации SwiftUI

API анимации SwiftUI упрощает определение анимаций и управление их временем и повторением. Используя анимации SwiftUI в UIKit, мы можем создавать более плавные и согласованные анимации во всем нашем приложении, улучшая общее впечатление пользователей.

Если у вас есть старые приложения для iOS и вы хотите улучшить их с помощью современных функций SwiftUI, ознакомьтесь с книгой «Интеграция SwiftUI в приложения UIKit». В ней содержится подробное руководство по постепенному внедрению SwiftUI в ваши UIKit-проекты. Кроме того, если вы хотите усовершенствовать свои навыки программирования на Swift, последняя книга Swift Gems предлагает более сотни продвинутых советов и приемов, включая оптимизацию коллекций, работу со строками, освоение асинхронного программирования и отладку, чтобы поднять ваш Swift-код на новый уровень.

Источник

Если вы нашли опечатку - выделите ее и нажмите Ctrl + Enter! Для связи с нами вы можете использовать info@apptractor.ru.

Наши партнеры:

LEGALBET

Мобильные приложения для ставок на спорт
Хорошие новости

Telegram

Популярное

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: