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() {
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// 默认场景
|
|
|
|
|
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: "ProHUDMessage")
|
|
|
|
|
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: "ProHUDLoading")
|
|
|
|
|
return scene
|
|
|
|
|
}
|
|
|
|
|
static var success: ProHUD.Scene {
|
|
|
|
|
var scene = ProHUD.Scene.init(identifier: "success")
|
|
|
|
|
scene.alertDuration = 2
|
|
|
|
|
scene.image = ProHUD.image(named: "ProHUDSuccess")
|
|
|
|
|
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: "ProHUDWarning")
|
|
|
|
|
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: "ProHUDError")
|
|
|
|
|
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 {
|
2019-08-08 11:09:22 +08:00
|
|
|
|
var b = Bundle.init(for: Alert.self)
|
2019-07-31 17:40:39 +08:00
|
|
|
|
let p = b.path(forResource: "ProHUD", ofType: "bundle")
|
|
|
|
|
if let bb = Bundle.init(path: p ?? "") {
|
|
|
|
|
b = bb
|
|
|
|
|
}
|
|
|
|
|
return b
|
|
|
|
|
}
|
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 15:29:27 +08:00
|
|
|
|
return UIImage(named: named) ?? UIImage.init(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") {
|
|
|
|
|
if cfg.enableDebugPrint {
|
|
|
|
|
debugPrint(items, separator: separator, terminator: terminator)
|
2019-08-03 16:22:50 +08:00
|
|
|
|
}
|
|
|
|
|
}
|
2019-08-03 17:48:37 +08:00
|
|
|
|
|