磁性

Language Version License Platform Carthage compatible

磁性 (Magnetic) 是一个可定制的泡泡选择器,类似于 Apple Music 的风格选择。

$ pod try Magnetic

特性

要求

用法

一个 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

许可证

Magnetic 在 MIT 许可证下可用。 有关更多信息,请参见 LICENSE 文件。