Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/canalesb93/MantleModal
A draggable modal for iOS Applications.
https://github.com/canalesb93/MantleModal
Last synced: 2 months ago
JSON representation
A draggable modal for iOS Applications.
- Host: GitHub
- URL: https://github.com/canalesb93/MantleModal
- Owner: canalesb93
- License: mit
- Archived: true
- Created: 2015-11-12T07:30:11.000Z (about 9 years ago)
- Default Branch: master
- Last Pushed: 2019-04-09T21:18:14.000Z (almost 6 years ago)
- Last Synced: 2024-10-08T09:45:18.321Z (3 months ago)
- Language: Swift
- Size: 104 KB
- Stars: 90
- Watchers: 3
- Forks: 7
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome-swift-cn - MantleModal - A simple modal resource that uses a UIScrollView to allow the user to close the modal by dragging it down. (Libs / UI)
- fucking-awesome-swift - MantleModal - A simple modal resource that uses a UIScrollView to allow the user to close the modal by dragging it down. (Libs / UI)
- awesome-swift - MantleModal - A simple modal resource that uses a UIScrollView to allow the user to close the modal by dragging it down. (Libs / UI)
- awesome-swift - MantleModal - A draggable modal for iOS Applications. ` 📝 5 years ago ` (UI [🔝](#readme))
- awesome-swift - MantleModal - A simple modal resource that uses a UIScrollView to allow the user to close the modal by dragging it down. (Libs / UI)
README
# Mantle Modal
Draggable Modal, PopUp or Menu written in Swift.
## Description
A simple modal resource that uses a UIScrollView to allow the user to close the view by removing it from the screen.
## Install Instructions
#### CocoaPods
MantleModal is available through [CocoaPods](http://cocoapods.org). To install
it, simply add the following line to your Podfile:```ruby
use_frameworks!target 'ProjectName' do
pod 'MantleModal'
end
```Then, run `pod install`
In case you haven't installed CocoaPods yet, run the following command
```ruby
$ gem install cocoapods
```#### Manual
Drag the file named `RCMantleViewController.swift` into your project.## Usage
Setup is faily simple, but I have plans to make it even easier later.
### Step 1
Add a new View Controler into your storyboard and set the **Class** to `RCMantleViewController` and the **Storyboard ID** to `MantleViewController`.
### Step 2
Add your own view into your storyboard which will represent the modal. Also set a unique **Storyboard ID** to it.
If you are gonna use a PopUp set the background view color transparent.### Step 3
Import the module to your parent controller(if your using CocoaPods)```swift
import MantleModal
```Activate the modal like this in your parent controller.
```swift
// Create the MantleViewController from the Storyboard using the ID
let mantleViewController = storyboard!.instantiateViewControllerWithIdentifier("MantleViewController") as! RCMantleViewController
// Create your modal controller with your storyboard ID
let popUpViewController = storyboard!.instantiateViewControllerWithIdentifier("YourUniqueStoryboardID") as! YourViewController
// Set it's delegate to be able to call 'delegate.dismissView(animated: Bool)'
popUpViewController.delegate = mantleViewController
// Initialize Mantle
mantleViewController.setUpScrollView()
// Add your modal to Mantle
mantleViewController.addToScrollViewNewController(popUpViewController)
// Present the modal through the MantleViewController
self.presentViewController(mantleViewController, animated: false, completion: nil)
```
### Step 4
In your modal's controller also import:```swift
import MantleModal
```Then define your delegate helper.
```swift
var delegate: RCMantleViewDelegate!
```
And then dismiss the modal using this:```swift
delegate.dismissView(true)
```## Configuration
MantleModal currently includes some configuration which you must call before `mantleViewController.setUpScrollView()`.
The current configuration available includes:```swift
// Allows you to dismiss the view by dragging up
mantleViewController.bottomDismissible = false
// Allows you to dismiss the view by dragging down
mantleViewController.topDismissable = true
// Allows you to drag to the sides to close
mantleViewController.draggableToSides = false// 'appearOffset' moves the menu closer to the edge so that it appears quicker
mantleViewController.appearOffset = CGFloat(290)
// '290' could be the distance between the top of the popup and the top of the screen
// Makes the view present from the top, can be set multiple times before presenting
// Also makes it hide to the top.
mantleViewController.appearFromTop = true // // default = false
```You can also access the ScrollView and modify its options, just make sure you do it after calling `mantleViewController.setUpScrollView()`
```swift
mantleViewController.scrollView.bounces = false
```## How it works
The view you are actually presenting is actually a `UIScrollView` with a larger `UIView` inside that contains your own view along with extra empty space that is fully created by `RCMantleViewController`. `RCMantleViewController` will then detect when your view is no longer centered in the ScrollView and dismiss the complete view. It does not use native modal animations and uses the `UIScrollView`'s *scroll to content* animation.## Pending
* Orientation change support.
* More...## Credits
Mostly done by myself - **Ricardo Canales**
I am still have many things to learn about iOS development so any suggestions and contributions are welcome.
Initial code inspired by this [StackOverflow](http://stackoverflow.com/questions/24687140/snapchat-like-swipe-navigation-between-views-in-xcode-6-and-swift) post.
Credit to [lbrendanl](https://github.com/lbrendanl) and [Poql](http://stackoverflow.com/users/3857555/poql)