Skip to content

Instantly share code, notes, and snippets.

import UIKit
protocol ContainmentProvider: class {
func addChild(_ viewController: UIViewController, to containerView: UIView)
func removeChild(_ viewController: UIViewController?)
}
extension ContainmentProvider where Self: UIViewController {
func addChild(_ viewController: UIViewController, to containerView: UIView) {
self.addChild(viewController)
@IBDesignable
class ShadowButton: UIButton {
@IBInspectable
var color: UIColor = .white {
didSet {
self.setNeedsDisplay()
}
}
class ShadowView: UIView {
var color: UIColor = .white {
didSet {
self.setNeedsDisplay()
}
}
var cornerRadius: CGFloat = 12 {
didSet {
@NeilsUltimateLab
NeilsUltimateLab / PopoverController.swift
Created May 18, 2019 12:15
Make any view controller popover controller.
import UIKit
class PopoverController: UIViewController {
enum Source {
case barButtonItem(item: UIBarButtonItem)
case sourceView(view: UIView?)
}
private var contentViewController: UIViewController?
@NeilsUltimateLab
NeilsUltimateLab / AppHUD.swift
Last active September 10, 2020 07:05
WebRequest Classes and Structures
import UIKit
public class AppHUD {
public init() {}
public enum `Type` {
case definite(String?, String?)
case indefinite
case message(UIImage?, String?, String?, TimeInterval)
import UIKit
class ShadowView: UIView {
var color: UIColor? {
didSet {
self.setNeedsDisplay()
}
}
@NeilsUltimateLab
NeilsUltimateLab / IndicatorViewButton.swift
Last active March 7, 2019 18:04
A button with activity indicator in the center.
import UIKit
class IndicatorViewButton: UIButton {
var roundedCornerRequired: Bool = true
private var indicatorView: UIActivityIndicatorView = {
let aiv = UIActivityIndicatorView(activityIndicatorStyle: UIActivityIndicatorViewStyle.white)
aiv.hidesWhenStopped = true
aiv.translatesAutoresizingMaskIntoConstraints = false
@NeilsUltimateLab
NeilsUltimateLab / UIViewController+Storyboard.swift
Last active March 6, 2019 09:20
Instantiate view controller from Storyboard enum.
protocol Identifiable {
static var identifier: String { get }
}
extension Identifiable where Self: UIViewController {
static var identifier: String {
return String(describing: self)
}
}
@NeilsUltimateLab
NeilsUltimateLab / ModalPresentationAnimator.swift
Last active February 12, 2019 05:43
Custom UIViewController transition. Supports pop and modal transition.
import UIKit
extension ModalPresentationAnimator {
enum Mode {
case present
case dismiss
}
enum AnimationStyle {
case modal
case pop
@NeilsUltimateLab
NeilsUltimateLab / FileCoordinator.swift
Created February 3, 2019 08:21
Save images to file system.
import UIKit
struct FileCoordinator {
static func isFileExist(at url: URL, destinationUrl: @escaping (URL?)->Void) {
let backgroundQueue = DispatchQueue.global(qos: DispatchQoS.QoSClass.background)
backgroundQueue.async {
guard let documentUrl = FileManager.default.urls(for: .documentDirectory, in: FileManager.SearchPathDomainMask.userDomainMask).first else {
DispatchQueue.main.async {