iOS18适配指南之Symbol Animations
2024-08-10 本文已影响0人
YungFan
介绍
- WWDC23 推出的 Symbol Animations 使得 SF Symbols 中的图标可以呈现丰富多彩的动画。
- UIImageView 通过
addSymbolEffect()
方法增加动画效果。 - WWDC24 中 Symbol Animations 新增了动画效果
rotate
、wiggle
与breathe
以及控制方式periodic
。
使用
- rotate 效果。
import UIKit
class ViewController: UIViewController {
lazy var imageView: UIImageView = {
let imageView = UIImageView(image: UIImage(systemName: "heart.fill")?.withTintColor(.red, renderingMode: .alwaysOriginal))
imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
imageView.contentMode = .scaleAspectFit
imageView.center = view.center
return imageView
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(imageView)
// iOS18新增
imageView.addSymbolEffect(.rotate, options: .repeat(.periodic(3, delay: 1)), animated: true) // periodic控制方式:重复执行3次,延迟1s
}
}
![](https://img.haomeiwen.com/i735757/a42e12ee5de45efe.gif)
- wiggle 效果。
import UIKit
class ViewController: UIViewController {
lazy var imageView: UIImageView = {
let imageView = UIImageView(image: UIImage(systemName: "heart.fill")?.withTintColor(.red, renderingMode: .alwaysOriginal))
imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
imageView.contentMode = .scaleAspectFit
imageView.center = view.center
return imageView
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(imageView)
// iOS18新增
imageView.addSymbolEffect(.wiggle, options: .repeat(.continuous), animated: true)
}
}
![](https://img.haomeiwen.com/i735757/70e81c3965c82148.gif)
- breathe 效果。
import UIKit
class ViewController: UIViewController {
lazy var imageView: UIImageView = {
let imageView = UIImageView(image: UIImage(systemName: "heart.fill")?.withTintColor(.red, renderingMode: .alwaysOriginal))
imageView.frame = CGRect(x: 0, y: 0, width: 200, height: 200)
imageView.contentMode = .scaleAspectFit
imageView.center = view.center
return imageView
}()
override func viewDidLoad() {
super.viewDidLoad()
view.addSubview(imageView)
// iOS18新增
imageView.addSymbolEffect(.breathe, options: .repeat(.continuous), animated: true)
}
}
![](https://img.haomeiwen.com/i735757/9374f090e15ef7e3.gif)