SwiftOverlays is a Swift GUI library for displaying various popups and notifications.
SwiftOverlays provides several ways to notify user:
- Wait overlay: a simple overlay with activity indicator
- Wait overlay with text
- Overlay with text only
- Overlay with image and text (can be used with PPSwiftGifs to show custom animated GIF instead of UIActivityIndicatorView)
- All of the above with blocking any user interaction
- Notification on top of the status bar, similar to native iOS local/push notifications
Just clone and add SwiftOverlays.swift
to your project.
- Make sure that your Cocoapods version is >= 0.36:
pod --version
- If not, update it:
sudo gem install cocoapods
pod init
in you project root dirnano Podfile
, add:
pod 'SwiftOverlays', '~> 0.14'
use_frameworks!
- Save it:
ctrl-x
,y
,enter
pod update
- Open generated
.xcworkspace
- Don't forget to import SwiftOverlays:
import SwiftOverlays
!
- iOS 7.0+ (8.0+ if you use Cocoapods)
- Xcode 6.3
- Swift 1.2 (if you need Swift 1.1, use swift-1.1 branch)
- For Swift 2.0 use swift-2.0 branch
If you're using CocoaPods, import the library with import SwiftOverlays
You can use UIViewController convenience methods provided by library:
// In your view controller:
// Wait overlay
self.showWaitOverlay()
// Wait overlay with text
let text = "Please wait..."
self.showWaitOverlayWithText(text)
// Overlay with text only
let text = "This is a text-only overlay...\n...spanning several lines"
self.showTextOverlay(text)
// Remove everything
self.removeAllOverlays()
// Notification on top of the status bar
UIViewController.showNotificationOnTopOfStatusBar(annoyingNotificationView!, duration: 5)
// Block user interaction
SwiftOverlays.showBlockingWaitOverlayWithText("This is blocking overlay!")
// Don't forget to unblock!
SwiftOverlays.removeAllBlockingOverlays()
You can't use SwiftOverlays convenience methods directly with UITableViewController - because its view is, well, an UITableView, and overlay will be scrolled along with it.
Instead I suggest using UIViewController instead of UITableViewController and adding UITableView as a subview.
If for some reason you can't use UIViewController, you can do something like:
SwiftOverlays.showCenteredWaitOverlayWithText(self.view.superview!, text: "Please wait...")
SwiftOverlays.removeAllOverlaysFromView(self.view.superview!)
(but in that case overlay will be added to the superview, and you should obviously do that only if superview is available - for example in viewDidAppear method of your controller.).
You are welcome to fork and submit pull requests