Magnetic 3.3.1

Magnetic 3.3.1

测试已测试
Lang语言 SwiftSwift
许可证 MIT
Released最后发布2022年6月
SPM支持SPM

Lasha Efremidze维护。



Magnetic 3.3.1

  • 作者
  • efremidze

Magnetic

Language Version License Platform Carthage compatible

Magnetic是一个可定制的泡泡选择器,类似于Apple Music流派选择器。

Demo GIF

演示视频

$ 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文件。