ios - 如何制作这个浮动视图动画
问题描述
如何使用 uiviews 在 swift uikit 中制作此浮动视图动画
- 每个视图不会相互折叠。
- 每个视图位置随机到 16 像素并且移动缓慢。
我已尝试使用此代码并多次调用推送功能
导入 UIKit
lazy var collision: UICollisionBehavior = {
let collision = UICollisionBehavior()
collision.translatesReferenceBoundsIntoBoundary = true
collision.collisionDelegate = self
collision.collisionMode = .everything
return collision
}()
lazy var itemBehaviour: UIDynamicItemBehavior = {
let behaviou = UIDynamicItemBehavior()
behaviou.allowsRotation = false
return behaviou
}()
func addingPushBehaviour(onView view: UIDynamicItem ,animationAdded: Bool = false) {
let push = UIPushBehavior(items: [view], mode: .instantaneous)
push.angle = CGFloat(arc4random())
push.magnitude = 0.005
push.action = { [weak self] in
self?.removeChildBehavior(push)
}
addChildBehavior(push)
}
func addItem(withItem item: UIDynamicItem) {
collision.addItem(item)
itemBehaviour.addItem(item)
addingPushBehaviour(onView: item)
}
override init() {
super.init()
addChildBehavior(collision)
addChildBehavior(itemBehaviour)
}
var mainView: UIView?
convenience init(animator: UIDynamicAnimator , onView: UIView) {
self.init()
self.mainView = onView
animator.addBehavior(self)
}
解决方案
将您的视图设置为正方形,使用 backroundColor 和cornerRadius = height/2 以获得您在示例中显示的圆形彩色视图外观。
UIViewPropertyAnimator
使用几秒钟的持续时间创建 UIView 动画,您可以将每个视图动画到一个位置,该位置距其“锚”位置的随机距离在每个维度中 < 16 个像素。(谷歌使用 . 创建动画UIViewPropertyAnimator
。你应该可以在网上找到很多例子。)
推荐阅读
- php - 在数组中添加字符串
- java - 谷歌日历 api 删除未来事件
- python - Django connection mysql error, showing the target computer actively refused
- python - 求幂运算的模数初学者问题
- python - 输入未静音/正确指向函数中的新分配
- scope - 跨多个模块访问单例
- php - SQL 语法错误 Maria DB 服务器 Mysqli_query
- sql - sql queries : IN vs equal
- android - 在 Flutter 中使用新版本更新(本机)android 应用程序,同时保留数据库
- python - HeaderParseError in django email form