AmazingBubbles
  • September 10, 2023

Bubble pickers, inspired by Apple

Requirements:


  • iOS 9.1+
  • XCode 8.0+
  • Swift 3.0

Installation


AmazingBubbles Library is available through CocoPods. To install, add the following line to your Podfile:

pod ‘AmazingBubbles’, ‘~> 0.0’

Usage:


  1. Import library as follows:

import AmazingBubbles

  1. Add ContentBubblesView to your VC;
  2. Add delegate and dataSource for ContentBubblesView instance:

class ViewController: UIViewController {

@IBOutlet weak var bubblesView: ContentBubblesView! {
didSet {
bubblesView.delegate = self
bubblesView.dataSource = self
}
}

}

  1. Implement protocols :

public protocol ContentBubblesViewDelegate: class {
func minimalSizeForBubble(in view: ContentBubblesView) -> CGSize
func maximumSizeForBubble(in view: ContentBubblesView) -> CGSize

func contentBubblesView(_ view: ContentBubblesView, didSelectItemAt index: Int)
func contentBubblesView(_ view: ContentBubblesView, shouldChangeSizeForItemAt index: Int) -> Bool
func contentBubblesView(_ view: ContentBubblesView, didChangeSizeForItemAt index: Int)
}

public protocol ContentBubblesViewDataSource: class {
func countOfSizes(in view: ContentBubblesView) -> Int

func numberOfItems(in view: ContentBubblesView) -> Int
func addOrUpdateBubbleView(forItemAt index: Int, currentView: BubbleView?) -> BubbleView
}

for example:

extension ViewController: ContentBubblesViewDataSource {
func countOfSizes(in view: ContentBubblesView) -> Int {
return 3
}

func numberOfItems(in view: ContentBubblesView) -> Int {
return 15
}

func addOrUpdateBubbleView(forItemAt index: Int, currentView: BubbleView?) -> BubbleView {
var view: BubbleView = currentView ?? BubbleView()
view.backgroundColor = .clear
let randomOrigin = CGPoint(x: CGFloat(drand48() * Double(self.view.frame.width * 2 / 3)),
y: CGFloat(drand48() * Double(self.view.frame.height * 2 / 3)))
view.frame = CGRect(origin: randomOrigin,
size: .zero)
return view
}
}

  1. And than call:

bubblesView.reload(randomizePosition: true)

Additional features:


  • You can create custom views by subclassing BubbleView
  • You can enable/disable gestures in ContentBubblesView:

bubblesView.tapEnabled = true
bubblesView.panEnabled = false

  • Also you can change some settings in BubbleConstants struct or play with some settings of UIDynamicBehaviors.

GitHub


View Github

YOU MIGHT ALSO LIKE...
MijickPopups Hero

  Popups Alerts Resizable Sheets Banners

SwiftUI Tooltip

This package provides you with an easy way to show tooltips over any SwiftUI view, since Apple does not provide ...

SimpleToast for SwiftUI

SimpleToast is a simple, lightweight, flexible and easy to use library to show toasts / popup notifications inside iOS or ...

SSToastMessage

Create Toast Views with Minimal Effort in SwiftUI Using SSToastMessage. SSToastMessage enables you to effortlessly add toast notifications, alerts, and ...

ToastUI

A simple way to show toast in SwiftUI   Getting Started • Documentation • Change Log  Â