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...
PermissionsSwiftUI: A SwiftUI package to handle permissions

PermissionsSwiftUI displays and handles permissions in SwiftUI. It is largely inspired by SPPermissions. The UI is highly customizable and resembles an Apple style. ...

Pager tab strip view

Introduction PagerTabStripView is the first pager view built in pure SwiftUI. It provides a component to create interactive pager views ...

PageView

SwiftUI view enabling page-based navigation, imitating the behaviour of UIPageViewController in iOS.

Pages

    

How to take action when a property changes

1. Taking Action When a Property Changes: Property Observers Swift lets you observe and respond to changes in a property’s ...