mirror of https://github.com/xaoxuu/ProHUD
117 lines
3.4 KiB
Swift
117 lines
3.4 KiB
Swift
//
|
||
// HUDConfig.swift
|
||
// ProHUD
|
||
//
|
||
// Created by xaoxuu on 2019/7/29.
|
||
// Copyright © 2019 Titan Studio. All rights reserved.
|
||
//
|
||
|
||
import UIKit
|
||
|
||
|
||
/// HUD配置
|
||
public extension ProHUD {
|
||
struct Configuration {
|
||
|
||
/// 是否允许log输出
|
||
public var enablePrint = true
|
||
|
||
/// 根控制器,默认可以自动获取,如果获取失败请主动设置
|
||
public var rootViewController: UIViewController?
|
||
|
||
/// iOS13必须设置此值,默认可以自动获取,如果获取失败请主动设置
|
||
@available(iOS 13.0, *)
|
||
private static var sharedWindowScene: UIWindowScene?
|
||
|
||
/// iOS13必须设置此值,默认可以自动获取,如果获取失败请主动设置
|
||
@available(iOS 13.0, *)
|
||
public var windowScene: UIWindowScene? {
|
||
set {
|
||
Configuration.sharedWindowScene = newValue
|
||
}
|
||
get {
|
||
return Configuration.sharedWindowScene
|
||
}
|
||
}
|
||
|
||
/// 动态颜色(适配iOS13)
|
||
public lazy var dynamicColor: UIColor = {
|
||
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
|
||
}
|
||
return .init(white: 0.1, alpha: 1)
|
||
}()
|
||
|
||
/// 主标签文本颜色
|
||
public lazy var primaryLabelColor: UIColor = {
|
||
return dynamicColor.withAlphaComponent(0.8)
|
||
}()
|
||
|
||
/// 次级标签文本颜色
|
||
public lazy var secondaryLabelColor: UIColor = {
|
||
return dynamicColor.withAlphaComponent(0.66)
|
||
}()
|
||
|
||
public func blurView(_ callback: @escaping () -> UIVisualEffectView) {
|
||
createBlurView = callback
|
||
}
|
||
|
||
|
||
public var toast = Toast()
|
||
public var alert = Alert()
|
||
public var `guard` = Guard()
|
||
|
||
/// 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`)
|
||
}
|
||
|
||
}
|
||
}
|
||
|
||
/// 配置
|
||
internal var cfg = ProHUD.Configuration()
|
||
|
||
public extension ProHUD {
|
||
static func config(_ config: (inout Configuration) -> Void) {
|
||
config(&cfg)
|
||
}
|
||
}
|
||
|
||
internal var createBlurView: () -> UIVisualEffectView = {
|
||
return {
|
||
let vev = UIVisualEffectView()
|
||
if #available(iOS 13.0, *) {
|
||
vev.effect = UIBlurEffect(style: .systemMaterial)
|
||
} else if #available(iOS 11.0, *) {
|
||
vev.effect = UIBlurEffect(style: .extraLight)
|
||
} else {
|
||
vev.effect = .none
|
||
vev.backgroundColor = .white
|
||
}
|
||
return vev
|
||
}
|
||
}()
|