Created
March 26, 2015 01:41
-
-
Save igordeoliveirasa/78a310f0348fcad9b270 to your computer and use it in GitHub Desktop.
iOS Loading Overlay View - SWIFT
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// | |
// LoadingOverlay.swift | |
// app | |
// | |
// Created by Igor de Oliveira Sa on 25/03/15. | |
// Copyright (c) 2015 Igor de Oliveira Sa. All rights reserved. | |
// | |
// Usage: | |
// | |
// # Show Overlay | |
// LoadingOverlay.shared.showOverlay(self.navigationController?.view) | |
// | |
// # Hide Overlay | |
// LoadingOverlay.shared.hideOverlayView() | |
import UIKit | |
import Foundation | |
public class LoadingOverlay{ | |
var overlayView = UIView() | |
var activityIndicator = UIActivityIndicatorView() | |
class var shared: LoadingOverlay { | |
struct Static { | |
static let instance: LoadingOverlay = LoadingOverlay() | |
} | |
return Static.instance | |
} | |
public func showOverlay(view: UIView!) { | |
overlayView = UIView(frame: UIScreen.mainScreen().bounds) | |
overlayView.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.5) | |
activityIndicator = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.WhiteLarge) | |
activityIndicator.center = overlayView.center | |
overlayView.addSubview(activityIndicator) | |
activityIndicator.startAnimating() | |
view.addSubview(overlayView) | |
} | |
public func hideOverlayView() { | |
activityIndicator.stopAnimating() | |
overlayView.removeFromSuperview() | |
} | |
} |
@prwiley and @ctouchstone, you probably do not have a navigation controller initialized. You can get one easily by adding it to the storyboard or you can create a main navigation controller, see http://stackoverflow.com/questions/26753925/set-initial-viewcontroller-in-appdelegate-swift
Exactly what I needed. Thanks for saving me some time 👍
Works great :-) Thanks
Thanks a lot 👍
What about user interactions?
This won't work for view gestures
if there is UIKit, then Foundation is unnecessary to import
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Nice solution. I would suggest making your vars private so they're hidden from invoking objects. Only allow access to your functions. I also added a class level boolean called visible that will track whether the overlay is visible or not. This way a call into stopAnimating and removeFromSuperview only occur if the overlay is visible.