MaterialActionSheetController
  • October 30, 2023

Lightweight and totally customizable. Create and present it the way you do with UIAlertController.

Screenshots


  • Demo

 

Features


  •  Using closures to configure actions
  •  Action with optional icon and accessory view
  •  Handling touch on accessory view
  •  Separate long action list in sections
  •  Using closures to callback when controller is about to dismiss
  •  2 built-in themes: light & dark
  •  Customizable header
  •  Swift 3 compliant

Requirements


  • iOS 8.0+
  • Xcode 8
  • Swift 3

Installation


CocoaPods

MaterialActionSheetController is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod ‘MaterialActionSheetController’

Manually

Add MaterialActionSheetController.swift to your project

Usage


 

// Import MaterialActionSheetController if you’re using CocoaPods
import MaterialActionSheetController

// Create an action
let lightBulbAction = MaterialAction(
icon: UIImage(named: “lightbulb”),
title: “Action with UISwitch as an accessory view”, handler: { [unowned self] (accessoryView) in
self.doSomething()
},
accessoryView: UISwitch(),
dismissOnAccessoryTouch: true,
accessoryHandler: { [unowned self] (accessoryView) in
if let lightBulbSwitch = accessoryView as? UISwitch {
if accessoryView.on {
print(“Light is ON!”)
} else {
print(“Light is OFF!”)
}
}
self.doSomeOtherThing()
})

// Then create your MaterialActionSheetController
// parameter sections is a variadic which take a flexible list of section
let materialActionSheetController = MaterialActionSheetController(
title: “A nice title”,
message: “A friendly message”,
actionSections: [aCoolAction, anotherCoolAction], [cancelAction])

// Or create
let materialActionSheetController = MaterialActionSheetController()
materialActionSheetController.title = “A nice title”
materialActionSheetController.message = “A friendly message”
materialActionSheetController.actionSections.append([aCoolAction, anotherCoolAction])
materialActionSheetController.actionSections.append([cancelAction])

// Customize theme
materialActionSheetController.theme = MaterialActionSheetTheme.dark()

// Custom header view
let imageView = UIImageView(image: UIImage(named: “myimage”))
imageView.bounds = CGRect(origin: CGPoint.zero, size: CGSize(width: 300, height: 100))
materialActionSheetController.customHeaderView = imageView

// Handler on “will dismiss” and “did dismiss” event
materialActionSheetController.willDismiss = { [unowned self] in
print(“I will dismiss.”)
self.doSomething()
}

// Finally present it
materialActionSheetController.didDismiss = { [unowned self] in
print(“I did dismiss.”)
self.doSomething()
}

presentViewController(materialActionSheetController, animated: true, completion: nil)

See code in demo for more detailed examples.

GitHub


View Github

#cocoapods #ios #swift #uialertcontroller
YOU MIGHT ALSO LIKE...
ConfettiView

A SwiftUI View that emits confetti with user-defined shapes, images, and text.

SwiftUI Colour Wheel

A colour wheel made all in SwiftUI. There are 2 different colour wheels to choose from. The first main one ...

ColorPickerRing

A color picker implementation with color wheel appearance written in plain SwiftUI. It is compatible with UIColor and NSColor.

ASCollectionView

This repository is no longer maintained. Here's why: with the release of iOS 16 SwiftUI now enables most of the ...