ProHUD/Source/ProHUD.swift

146 lines
4.0 KiB
Swift
Raw Permalink Normal View History

2019-07-31 17:40:39 +08:00
//
// ProHUD.swift
// ProHUD
//
// Created by xaoxuu on 2019/7/23.
// Copyright © 2019 Titan Studio. All rights reserved.
//
import UIKit
2019-08-01 20:22:57 +08:00
public class ProHUD {
2019-07-31 17:40:39 +08:00
public static let shared = ProHUD()
2019-08-03 17:48:37 +08:00
public var config: Configuration {
return cfg
}
2019-08-13 11:32:27 +08:00
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() {
}
}
}
//
2019-08-13 11:32:27 +08:00
public extension ProHUD.Scene {
init(identifier: String) {
self.init()
id = identifier
}
static var `default`: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "default")
scene.image = ProHUD.image(named: "prohud.note")
return scene
}
static var message: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "message")
2020-06-19 13:54:36 +08:00
scene.image = ProHUD.image(named: "prohud.message")
2019-08-13 11:32:27 +08:00
return scene
}
static var loading: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "loading")
scene.alertDuration = 0
scene.toastDuration = 0
scene.image = ProHUD.image(named: "prohud.candy")
2019-08-13 11:32:27 +08:00
return scene
}
static var success: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "success")
scene.alertDuration = 2
scene.image = ProHUD.image(named: "prohud.checkmark")
2019-08-13 11:32:27 +08:00
return scene
}
static var warning: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "warning")
scene.alertDuration = 2
scene.toastDuration = 5
scene.image = ProHUD.image(named: "prohud.exclamationmark")
2019-08-13 11:32:27 +08:00
return scene
}
static var error: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "error")
scene.alertDuration = 2
scene.toastDuration = 5
scene.image = ProHUD.image(named: "prohud.xmark")
return scene
}
static var confirm: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "confirm")
scene.alertDuration = 2
scene.toastDuration = 5
scene.image = ProHUD.image(named: "prohud.questionmark")
return scene
}
static var privacy: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "privacy")
scene.alertDuration = 2
scene.toastDuration = 5
scene.image = ProHUD.image(named: "prohud.privacy")
return scene
}
static var delete: ProHUD.Scene {
var scene = ProHUD.Scene.init(identifier: "delete")
scene.alertDuration = 2
scene.toastDuration = 5
scene.image = ProHUD.image(named: "prohud.trash")
2019-08-13 11:32:27 +08:00
return scene
}
2019-07-31 17:40:39 +08:00
}
2019-08-13 11:32:27 +08:00
2019-08-03 17:48:37 +08:00
// MARK: - Utilities
2019-07-31 17:40:39 +08:00
internal extension ProHUD {
2019-08-03 17:48:37 +08:00
/// Bundle
2019-08-01 20:22:57 +08:00
static var bundle: Bundle {
2020-06-15 18:58:13 +08:00
let path = Bundle(for: HUDController.self).path(forResource: "ProHUD", ofType: "bundle")
return Bundle(path: path ?? "") ?? Bundle.main
2019-07-31 17:40:39 +08:00
}
2019-08-05 20:13:17 +08:00
2019-08-03 17:48:37 +08:00
/// Image
2019-08-01 20:22:57 +08:00
static func image(named: String) -> UIImage? {
2020-06-15 18:58:13 +08:00
return UIImage(named: named) ?? UIImage(named: named, in: bundle, compatibleWith: nil)
2019-07-31 17:40:39 +08:00
}
}
2019-08-03 16:22:50 +08:00
2019-08-03 17:48:37 +08:00
///
internal var isPortrait: Bool {
if UIDevice.current.userInterfaceIdiom == .phone {
if UIApplication.shared.statusBarOrientation.isPortrait {
debug("当前是手机竖屏模式")
return true
} else {
debug("当前是手机横屏模式")
2019-08-03 16:22:50 +08:00
}
} else {
2019-08-03 17:48:37 +08:00
debug("非手机设备unspecified、iPad、tv、carPlay")
2019-08-03 16:22:50 +08:00
}
2019-08-03 17:48:37 +08:00
return false
2019-08-03 16:22:50 +08:00
}
2019-08-03 17:48:37 +08:00
/// Debug
internal func debug(_ items: Any..., separator: String = " ", terminator: String = "\n") {
2020-06-19 10:54:55 +08:00
if cfg.enablePrint {
print(items, separator: separator, terminator: terminator)
2019-08-03 16:22:50 +08:00
}
}
2019-08-03 17:48:37 +08:00