Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/ntnhon/MaterialActionSheetController
A Google like action sheet for iOS written in Swift.
https://github.com/ntnhon/MaterialActionSheetController
Last synced: 7 days ago
JSON representation
A Google like action sheet for iOS written in Swift.
- Host: GitHub
- URL: https://github.com/ntnhon/MaterialActionSheetController
- Owner: ntnhon
- License: mit
- Created: 2016-08-18T11:25:46.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2019-07-29T12:52:25.000Z (over 5 years ago)
- Last Synced: 2024-11-18T04:43:36.507Z (25 days ago)
- Language: Swift
- Homepage:
- Size: 2.64 MB
- Stars: 103
- Watchers: 7
- Forks: 9
- Open Issues: 3
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-ios - MaterialActionSheetController - A Google like action sheet for iOS written in Swift. (UI / Alert & Action Sheet)
- awesome-ios-star - MaterialActionSheetController - A Google like action sheet for iOS written in Swift. (UI / Alert & Action Sheet)
README
# MaterialActionSheetController
Lightweight and totally customizable. Create and present it the way you do with UIAlertController.[![Version](https://img.shields.io/cocoapods/v/MaterialActionSheetController.svg?style=flat)](http://cocoapods.org/pods/MaterialActionSheetController)
[![License](https://img.shields.io/cocoapods/l/MaterialActionSheetController.svg?style=flat)](http://cocoapods.org/pods/MaterialActionSheetController)
[![Platform](https://img.shields.io/cocoapods/p/MaterialActionSheetController.svg?style=flat)](http://cocoapods.org/pods/MaterialActionSheetController)## Screenshots
- Demo
| Default light theme | Dark theme | Custom header |
|---|---|---|---|---|
| | | |## Features
- [x] Using closures to configure actions
- [x] Action with optional icon and accessory view
- [x] Handling touch on accessory view
- [x] Separate long action list in sections
- [x] Using closures to callback when controller is about to dismiss
- [x] 2 built-in themes: light & dark
- [x] Customizable header
- [x] Swift 3 compliant## Todos
- Present on iPad as a pop-up
- Documenting## Requirements
- iOS 8.0+
- Xcode 8
- Swift 3## Installation
#### CocoaPods
MaterialActionSheetController is available through [CocoaPods](http://cocoapods.org). To install it, simply add the following line to your Podfile:```ruby
pod 'MaterialActionSheetController'
```#### Manually
Add `MaterialActionSheetController.swift` to your project
## Usage
```swift
// Import MaterialActionSheetController if you're using CocoaPods
import MaterialActionSheetController
```
```swift
// 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()
})
```
```swift
// 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])
``````swift
// Or create
let materialActionSheetController = MaterialActionSheetController()
materialActionSheetController.title = "A nice title"
materialActionSheetController.message = "A friendly message"
materialActionSheetController.actionSections.append([aCoolAction, anotherCoolAction])
materialActionSheetController.actionSections.append([cancelAction])
``````swift
// 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.## Contribute
Feel free to make PR, contributions are warmly welcome and appreciated.
## License
MaterialActionSheetController is available under the MIT license. See the LICENSE file for more info.