ViewAnimator — это библиотека для создания сложных анимаций UIView на iOS. Она позволяет легко создавать однострочные анимации для любых видов, включая те, которые содержат другие виды, такие как UITableView и UICollectionView с его ячейками или UIStackView с его arrangedSubviews.
Анимации SVG вдохновлены проектом Hero Люка Чжао (Luke Zhao).
Пользовательский интерфейс создан Messaki, обязательно посетите его профиль.
Логотип и баннер созданы @cintia_ve.
ViewAnimator доступен через CocoaPods. Чтобы установить его, просто добавьте следующую строку в свой Podfile:
pod "ViewAnimator"
Перетащите быстрые файлы внутри ViewAnimator/Classes в свой проект.
github "marcosgriselli/ViewAnimator"
ViewAnimator
предоставляет набор расширений UIView
, чтобы легко добавлять пользовательские анимации к вашим представлениям. Начиная с версии 2.0.0 существует два способа использования этого расширения.
Представления могут анимировать себя, вызывая .animate(animations: [Animation])
, что является наиболее базовым использованием. Вот полный метод, который содержит множество аргументов по умолчанию:
func animate(animations: [Animation],
reversed: Bool = false,
initialAlpha: CGFloat = 0.0,
finalAlpha: CGFloat = 1.0,
delay: Double = 0,
duration: TimeInterval = ViewAnimatorConfig.duration,
usingSpringWithDamping dampingRatio: CGFloat = ViewAnimatorConfig.springDampingRatio,
initialSpringVelocity velocity: CGFloat = ViewAnimatorConfig.initialSpringVelocity,
completion: (() -> Void)? = nil)
``` **Анимация нескольких видов**
ViewAnimator следует стилю API анимации UIKit со статическим методом `UIView.animate(views: [UIView], animations: [Animation])`. Это делает библиотеку очень простой в использовании и расширяемой для любого вида представления. Как и в предыдущем примере, метод содержит множество аргументов по умолчанию:
```swift
static func animate(views: [UIView],
animations: [Animation],
reversed: Bool = false,
initialAlpha: CGFloat = 0.0,
finalAlpha: CGFloat = 1.0,
delay: Double = 0,
animationInterval: TimeInterval = 0.05,
duration: TimeInterval = ViewAnimatorConfig.duration,
usingSpringWithDamping dampingRatio: CGFloat = ViewAnimatorConfig.springDampingRatio,
initialSpringVelocity velocity: CGFloat = ViewAnimatorConfig.initialSpringVelocity,
completion: (() -> Void)? = nil)
AnimationType
Direction
предоставляет ось, на которой должна происходить анимация, и направление её движения.
let animation = AnimationType.from(direction: .top, offset: 30.0)
view.animate(animations: [animation])
Поддержка масштабирования при увеличении и уменьшении масштаба.
let animation = AnimationType.zoom(scale: 0.5)
view.animate(animations: [animation])
Комбинированные анимации
Можно комбинировать соответствия Animation
, чтобы применить несколько преобразований к блоку анимации.
let fromAnimation = AnimationType.from(direction: .right, offset: 30.0)
let zoomAnimation = AnimationType.zoom(scale: 0.2)
let rotateAnimation = AnimationType.rotate(angle: CGFloat.pi/6)
UIView.animate(views: collectionView.visibleCells,
animations: [zoomAnimation, rotateAnimation],
duration: 0.5)
UIView.animate(views: tableView.visibleCells,
animations: [fromAnimation, zoomAnimation],
delay: 0.5)
Анимация
Протокол Animation
предоставляет возможность расширения поддерживаемых анимаций ViewAnimator
, за исключением функции animateRandom
.
public protocol Animation {
var initialTransform: CGAffineTransform { get }
}
Расширения UITableView/UICollection
ViewAnimator поставляется с набором удобных расширений, которые значительно упрощают анимацию в UITableView
и UICollectionView
. Оба имеют доступ к ячейкам в разделе для лёгкой анимации.
Оба предоставляют метод visibleCells(in section: Int)
, который возвращает массив UITableViewCell
или UICollectionViewCell
.
let cells = tableView.visibleCells(in: 1)
UIView.animate(views: cells, animations: [rotateAnimation, fadeAnimation])
Упоминания
Детали проекта
Не стесняйтесь сотрудничать с идеями 💭, проблемами ⁉️ и/или запросами на вытягивание 🔃.
Если вы используете ViewAnimator в своём приложении, я хотел бы услышать об этом и показать вашу анимацию здесь!
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )