Magnetic
Magnetic是一个可定制的泡泡选择器,类似于Apple Music流派选择器。
$ pod try Magnetic
特性
- 添加/删除节点
- 选择/取消选择/删除动画
- 多选
- 图片
- 多行标签
- 文档
要求
- iOS 13.0+ (Magnetic 3.3.x), iOS 9.0+ (Magnetic 3.2.1)
- Swift 5 (Magnetic 3.x), Swift 4 (Magnetic 2.x), Swift 3 (Magnetic 1.x)
使用方法
Magnetic
实例是一个 SKScene。
要显示,你应从SKView对象中呈现它。
import Magnetic
class ViewController: UIViewController {
var magnetic: Magnetic?
override func loadView() {
super.loadView()
let magneticView = MagneticView(frame: self.view.bounds)
magnetic = magneticView.magnetic
self.view.addSubview(magneticView)
}
}
属性
var magneticDelegate: MagneticDelegate? // magnetic delegate
var allowsMultipleSelection: Bool // controls whether you can select multiple nodes. defaults to true
var selectedChildren: [Node] // returns selected chidren
节点
Node
对象是SKShapeNode子类。
交互
// add circular node
let node = Node(text: "Italy", image: UIImage(named: "italy"), color: .red, radius: 30)
magnetic.addChild(node)
// add custom node
let node = Node(text: "France", image: UIImage(named: "france"), color: .blue, path: path, marginScale: 1.1)
magnetic.addChild(node)
// remove node
node.removeFromParent()
属性
var text: String? // node text
var image: UIImage? // node image
var color: UIColor // node color
动画
override func selectedAnimation() {
// override selected animation
}
override func deselectedAnimation() {
// override deselected animation
}
override func removedAnimation(completion: @escaping () -> Void) {
// override removed animation
}
委派
《MagneticDelegate》协议提供了一系列功能,用于观察节点的当前状态。
func magnetic(_ magnetic: Magnetic, didSelect node: Node) {
// handle node selection
}
func magnetic(_ magnetic: Magnetic, didDeselect node: Node) {
// handle node deselection
}
自定义
为自定义而对Node进行子类化。
例如,默认带有图像的节点
class ImageNode: Node {
override var image: UIImage? {
didSet {
texture = image.map { SKTexture(image: $0) }
}
}
override func selectedAnimation() {}
override func deselectedAnimation() {}
}
安装
CocoaPods
使用 CocoaPods 安装,只需在您的 Podfile
中添加以下内容
use_frameworks!
pod "Magnetic"
Carthage
使用 Carthage 安装,只需在您的 Cartfile
中添加以下内容
github "efremidze/Magnetic"
提及
交流
- 如果您 发现了一个错误,请打开一个问题。
- 如果您 有功能请求,请打开一个问题。
- 如果您 想要贡献,提交一个拉取请求。
致谢
https://github.com/igalata/Bubble-Picker
许可证
磁铁服务遵循MIT许可证。有关更多信息,请参阅LICENSE文件。