ProHUD/Source/HUDConfig.swift

117 lines
3.4 KiB
Swift
Raw Permalink Normal View History

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
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-22 10:14:47 +08:00
/// iOS13
2020-06-15 15:11:44 +08:00
@available(iOS 13.0, *)
2020-06-22 10:14:47 +08:00
private static var sharedWindowScene: UIWindowScene?
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? {
set {
2020-06-22 10:14:47 +08:00
Configuration.sharedWindowScene = newValue
2020-06-15 15:11:44 +08:00
}
get {
2020-06-22 10:14:47 +08:00
return Configuration.sharedWindowScene
2020-06-15 15:11:44 +08:00
}
}
2019-08-03 17:48:37 +08:00
/// iOS13
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
}
}()