Latest 1.0.4
Homepage https://github.com/efremidze/Magnetic
License MIT
Platforms ios 9.0
Authors

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

Animations

override func selectedAnimation() {
    // override selected animation
}

override func deselectedAnimation() {
    // override deselected animation
}

override func removeAnimation(completion: @escaping () -> Void) {
    // override remove animation
}

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

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.

Latest podspec

{
    "name": "Magnetic",
    "version": "1.0.4",
    "summary": "SpriteKit Floating Bubble Picker (inspired by Apple Music)",
    "homepage": "https://github.com/efremidze/Magnetic",
    "license": {
        "type": "MIT",
        "file": "LICENSE"
    },
    "authors": {
        "efremidze": "[email protected]"
    },
    "source": {
        "git": "https://github.com/efremidze/Magnetic.git",
        "tag": "1.0.4"
    },
    "platforms": {
        "ios": "9.0"
    },
    "source_files": "Sources/*.swift",
    "pushed_with_swift_version": "3.0"
}

Pin It on Pinterest

Share This