woshilaozhang / Magnetic

SpriteKit Floating Bubble Picker (inspired by Apple Music)

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Magnetic

Language Version License Platform

Magnetic is a customizable bubble picker like the Apple Music genre selection.

Demo

$ pod try Magnetic

Requirements

  • iOS 9.0+
  • Xcode 8.0+
  • Swift 3.0+

Usage

A Magnetic object is an SKScene.

To display, you present it from an SKView object.

import Magnetic

class ViewController: UIViewController {

    var skView: SKView {
        return view as! SKView
    }

    override func loadView() {
        super.loadView()

        self.view = SKView(frame: self.view.bounds)
    }

    override func viewDidLoad() {
        super.viewDidLoad()

        let magnetic = Magnetic(size: self.view.bounds.size)
        skView.presentScene(magnetic)
    }

}

Properties

var magneticDelegate: MagneticDelegate? // magnetic delegate
var allowsMultipleSelection: Bool // controls whether you can select multiple nodes. defaults to true
var selectedChildren: [Node] // returns selected chidren

Nodes

A Node object is a circular SKShapeNode subclass.

Interaction

// add node
func addNode() {
    let node = Node(text: "Italy", image: UIImage(named: "italy"), color: .red, radius: 30)
    magnetic.addChild(node)
}

// remove node
func removeNode() {
    node.removeFromParent()
}

Properties

var text: String? // node text
var image: UIImage? // node image
var color: UIColor // node color. defaults to white

Delegation

The MagneticDelegate protocol provides a number of functions for observing the current state of nodes.

func magnetic(_ magnetic: Magnetic, didSelect node: Node) {
    // handle node selection
}

func magnetic(_ magnetic: Magnetic, didDeselect node: Node) {
    // handle node deselection
}

TODO

  • Add multiple selection states
  • Add long press to delete
  • Add node animation options

Installation

CocoaPods

To install with CocoaPods, simply add this in your Podfile:

use_frameworks!
pod "Magnetic"

Carthage

To install with Carthage, simply add this in your Cartfile:

github "efremidze/Magnetic"

Communication

  • If you found a bug, open an issue.
  • If you have a feature request, open an issue.
  • If you want to contribute, submit a pull request.

Credits

https://github.com/igalata/Bubble-Picker

License

Magnetic is available under the MIT license. See the LICENSE file for more info.

About

SpriteKit Floating Bubble Picker (inspired by Apple Music)

License:MIT License


Languages

Language:Swift 91.7%Language:Ruby 5.1%Language:Objective-C 3.1%