2019-07-31 17:40:39 +08:00
|
|
|
|
//
|
|
|
|
|
// HUDConfig.swift
|
|
|
|
|
// ProHUD
|
|
|
|
|
//
|
|
|
|
|
// Created by xaoxuu on 2019/7/29.
|
|
|
|
|
// Copyright © 2019 Titan Studio. All rights reserved.
|
|
|
|
|
//
|
|
|
|
|
|
|
|
|
|
import UIKit
|
|
|
|
|
|
2021-07-20 16:04:39 +08:00
|
|
|
|
@available(iOS 13.0, *) fileprivate var sharedWindowScene: UIWindowScene?
|
2020-06-15 15:11:44 +08:00
|
|
|
|
|
2020-06-22 10:14:47 +08:00
|
|
|
|
/// HUD配置
|
2019-07-31 17:40:39 +08:00
|
|
|
|
public extension ProHUD {
|
|
|
|
|
struct Configuration {
|
|
|
|
|
|
2020-06-19 10:54:55 +08:00
|
|
|
|
/// 是否允许log输出
|
|
|
|
|
public var enablePrint = true
|
2019-08-03 17:48:37 +08:00
|
|
|
|
|
2020-06-19 10:54:55 +08:00
|
|
|
|
/// 根控制器,默认可以自动获取,如果获取失败请主动设置
|
2019-08-08 09:25:28 +08:00
|
|
|
|
public var rootViewController: UIViewController?
|
|
|
|
|
|
2020-06-19 10:54:55 +08:00
|
|
|
|
/// iOS13必须设置此值,默认可以自动获取,如果获取失败请主动设置
|
2020-06-22 10:14:47 +08:00
|
|
|
|
@available(iOS 13.0, *)
|
2020-06-15 15:11:44 +08:00
|
|
|
|
public var windowScene: UIWindowScene? {
|
2021-07-20 16:04:39 +08:00
|
|
|
|
set { sharedWindowScene = newValue }
|
|
|
|
|
get { sharedWindowScene }
|
2020-06-15 15:11:44 +08:00
|
|
|
|
}
|
|
|
|
|
|
2021-07-20 16:04:39 +08:00
|
|
|
|
/// 动态颜色
|
2019-08-03 17:48:37 +08:00
|
|
|
|
public lazy var dynamicColor: UIColor = {
|
2020-06-15 15:11:44 +08:00
|
|
|
|
if #available(iOS 13.0, *) {
|
|
|
|
|
let color = UIColor { (traitCollection: UITraitCollection) -> UIColor in
|
|
|
|
|
if traitCollection.userInterfaceStyle == .dark {
|
|
|
|
|
return .init(white: 1, alpha: 1)
|
|
|
|
|
} else {
|
|
|
|
|
return .init(white: 0.1, alpha: 1)
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
return color
|
|
|
|
|
} else {
|
|
|
|
|
// Fallback on earlier versions
|
|
|
|
|
}
|
2019-08-12 15:02:36 +08:00
|
|
|
|
return .init(white: 0.1, alpha: 1)
|
2019-08-03 17:48:37 +08:00
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
/// 主标签文本颜色
|
|
|
|
|
public lazy var primaryLabelColor: UIColor = {
|
2019-08-08 09:25:28 +08:00
|
|
|
|
return dynamicColor.withAlphaComponent(0.8)
|
2019-08-03 17:48:37 +08:00
|
|
|
|
}()
|
|
|
|
|
|
|
|
|
|
/// 次级标签文本颜色
|
|
|
|
|
public lazy var secondaryLabelColor: UIColor = {
|
2019-08-12 15:02:36 +08:00
|
|
|
|
return dynamicColor.withAlphaComponent(0.66)
|
2019-08-03 17:48:37 +08:00
|
|
|
|
}()
|
|
|
|
|
|
2019-08-12 15:02:36 +08:00
|
|
|
|
public func blurView(_ callback: @escaping () -> UIVisualEffectView) {
|
|
|
|
|
createBlurView = callback
|
|
|
|
|
}
|
|
|
|
|
|
2019-08-03 17:48:37 +08:00
|
|
|
|
|
|
|
|
|
public var toast = Toast()
|
|
|
|
|
public var alert = Alert()
|
|
|
|
|
public var `guard` = Guard()
|
2019-07-31 17:40:39 +08:00
|
|
|
|
|
|
|
|
|
/// Toast的配置
|
|
|
|
|
/// - Parameter callback: 回调
|
|
|
|
|
public mutating func toast(_ callback: @escaping (inout Toast) -> Void) {
|
|
|
|
|
callback(&toast)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Alert的配置
|
|
|
|
|
/// - Parameter callback: 回调
|
|
|
|
|
public mutating func alert(_ callback: @escaping (inout Alert) -> Void) {
|
|
|
|
|
callback(&alert)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
/// Guard的配置
|
|
|
|
|
/// - Parameter callback: 回调
|
|
|
|
|
public mutating func `guard`(_ callback: @escaping (inout Guard) -> Void) {
|
|
|
|
|
callback(&`guard`)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
2019-08-05 20:13:17 +08:00
|
|
|
|
/// 配置
|
2019-08-03 17:48:37 +08:00
|
|
|
|
internal var cfg = ProHUD.Configuration()
|
|
|
|
|
|
|
|
|
|
public extension ProHUD {
|
|
|
|
|
static func config(_ config: (inout Configuration) -> Void) {
|
|
|
|
|
config(&cfg)
|
|
|
|
|
}
|
|
|
|
|
}
|
2019-08-12 15:02:36 +08:00
|
|
|
|
|
|
|
|
|
internal var createBlurView: () -> UIVisualEffectView = {
|
|
|
|
|
return {
|
|
|
|
|
let vev = UIVisualEffectView()
|
|
|
|
|
if #available(iOS 13.0, *) {
|
2020-06-15 15:11:44 +08:00
|
|
|
|
vev.effect = UIBlurEffect(style: .systemMaterial)
|
2019-08-12 15:02:36 +08:00
|
|
|
|
} else if #available(iOS 11.0, *) {
|
|
|
|
|
vev.effect = UIBlurEffect(style: .extraLight)
|
|
|
|
|
} else {
|
|
|
|
|
vev.effect = .none
|
|
|
|
|
vev.backgroundColor = .white
|
|
|
|
|
}
|
|
|
|
|
return vev
|
|
|
|
|
}
|
|
|
|
|
}()
|