ProHUD/Source/ProHUD.swift

163 lines
4.7 KiB
Swift
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

//
// ProHUD.swift
// ProHUD
//
// Created by xaoxuu on 2019/7/23.
// Copyright © 2019 Titan Studio. All rights reserved.
//
import UIKit
public class ProHUD {
public static let shared = ProHUD()
public var config: Configuration {
return cfg
}
public struct Scene {
private var id = "unknown"
public var identifier: String {
return id
}
public var image: UIImage?
public var alertDuration: TimeInterval?
public var toastDuration: TimeInterval? = 3
public var title: String?
public var message: String?
init() {
}
}
}
//
public extension ProHUD.Scene {
init(identifier: String) {
self.init()
id = identifier
}
static var `default`: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.default")
scene.image = ProHUD.image(named: "prohud.note")
return scene
}
static var message: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.message")
scene.image = ProHUD.image(named: "prohud.message")
scene.alertDuration = 2
scene.toastDuration = 5
return scene
}
static var loading: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.loading.rotate")
scene.image = ProHUD.image(named: "prohud.rainbow.circle")
scene.title = "Loading"
scene.alertDuration = 0
scene.toastDuration = 0
return scene
}
static var success: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.success")
scene.image = ProHUD.image(named: "prohud.checkmark")
scene.title = "Success"
scene.alertDuration = 2
return scene
}
static var warning: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.warning")
scene.image = ProHUD.image(named: "prohud.exclamationmark")
scene.title = "Warning"
scene.message = "Something happened."
scene.alertDuration = 2
scene.toastDuration = 5
return scene
}
static var error: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.error")
scene.image = ProHUD.image(named: "prohud.xmark")
scene.title = "Error"
scene.message = "Please try again later."
scene.alertDuration = 2
scene.toastDuration = 5
return scene
}
static var failure: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.failure")
scene.image = ProHUD.image(named: "prohud.xmark")
scene.title = "Failure"
scene.message = "Please try again later."
scene.alertDuration = 2
scene.toastDuration = 5
return scene
}
static var confirm: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.confirm")
scene.image = ProHUD.image(named: "prohud.questionmark")
scene.alertDuration = 2
scene.toastDuration = 5
return scene
}
static var privacy: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.privacy")
scene.image = ProHUD.image(named: "prohud.privacy")
scene.alertDuration = 2
scene.toastDuration = 5
return scene
}
static var delete: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "prohud.delete")
scene.image = ProHUD.image(named: "prohud.trash")
scene.alertDuration = 2
scene.toastDuration = 5
return scene
}
}
// MARK: - Utilities
internal extension ProHUD {
/// Bundle
static var bundle: Bundle {
let path = Bundle(for: HUDController.self).path(forResource: "ProHUD", ofType: "bundle")
return Bundle(path: path ?? "") ?? Bundle.main
}
/// Image
static func image(named: String) -> UIImage? {
return UIImage(named: named) ?? UIImage(named: named, in: bundle, compatibleWith: nil)
}
}
///
internal var isPortrait: Bool {
if UIDevice.current.userInterfaceIdiom == .phone {
if UIApplication.shared.statusBarOrientation.isPortrait {
debug("当前是手机竖屏模式")
return true
} else {
debug("当前是手机横屏模式")
}
} else {
debug("非手机设备unspecified、iPad、tv、carPlay")
}
return false
}
/// Debug
internal func debug(_ items: Any..., separator: String = " ", terminator: String = "\n") {
if cfg.enablePrint {
print(items, separator: separator, terminator: terminator)
}
}