Blame view
Pods/Toaster/Sources/ToastCenter.swift
1.47 KB
|
d774f0637
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
/*
* ToastCenter.swift
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* Version 2, December 2004
*
* Copyright (C) 2013-2015 Su Yeol Jeon
*
* Everyone is permitted to copy and distribute verbatim or modified
* copies of this license document, and changing it is allowed as long
* as the name is changed.
*
* DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
* TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
*
* 0. You just DO WHAT THE FUCK YOU WANT TO.
*
*/
import UIKit
open class ToastCenter {
// MARK: Properties
private let queue: OperationQueue = {
let queue = OperationQueue()
queue.maxConcurrentOperationCount = 1
return queue
}()
open var currentToast: Toast? {
return self.queue.operations.first as? Toast
}
open static let `default` = ToastCenter()
// MARK: Initializing
init() {
NotificationCenter.default.addObserver(
self,
selector: #selector(self.deviceOrientationDidChange),
name: .UIDeviceOrientationDidChange,
object: nil
)
}
// MARK: Adding Toasts
open func add(_ toast: Toast) {
self.queue.addOperation(toast)
}
// MARK: Cancelling Toasts
open func cancelAll() {
for toast in self.queue.operations {
toast.cancel()
}
}
// MARK: Notifications
dynamic func deviceOrientationDidChange() {
if let lastToast = self.queue.operations.first as? Toast {
lastToast.view.setNeedsLayout()
}
}
}
|