94 lines
2.7 KiB
Swift
94 lines
2.7 KiB
Swift
//
|
|
// SPAPPTool.swift
|
|
// ShortPlay
|
|
//
|
|
// Created by 曾觉新 on 2025/4/9.
|
|
//
|
|
|
|
import UIKit
|
|
|
|
class SPAPPTool: NSObject {
|
|
|
|
static func getAppDelegate() -> AppDelegate? {
|
|
return UIApplication.shared.delegate as? AppDelegate
|
|
}
|
|
|
|
///获得启动图
|
|
static func getLanuchViewController() -> UIViewController {
|
|
let storyboard = UIStoryboard(name: "LaunchScreen", bundle: nil)
|
|
let vc = storyboard.instantiateViewController(withIdentifier: "LaunchScreen")
|
|
return vc
|
|
}
|
|
|
|
///获取根视图
|
|
static func rootViewController() -> UIViewController? {
|
|
return getKeyWindow()?.rootViewController
|
|
}
|
|
|
|
///获取最上方视图
|
|
static func topViewController() -> UIViewController? {
|
|
var resultVC: UIViewController? = self.rootViewController()
|
|
if let rootNav = resultVC as? UINavigationController {
|
|
resultVC = rootNav.topViewController
|
|
}
|
|
|
|
resultVC = self._topViewController(resultVC)
|
|
while resultVC?.presentedViewController != nil {
|
|
resultVC = self._topViewController(resultVC?.presentedViewController)
|
|
}
|
|
return resultVC
|
|
}
|
|
|
|
private static func _topViewController(_ vc: UIViewController?) -> UIViewController? {
|
|
if vc is UINavigationController {
|
|
return _topViewController((vc as? UINavigationController)?.topViewController)
|
|
} else if vc is UITabBarController {
|
|
return _topViewController((vc as? UITabBarController)?.selectedViewController)
|
|
} else {
|
|
return vc
|
|
}
|
|
}
|
|
|
|
static func getKeyWindow() -> UIWindow? {
|
|
var window: UIWindow?
|
|
if #available(iOS 13.0, *) {
|
|
window = UIApplication.shared.connectedScenes
|
|
.filter({$0.activationState == .foregroundActive})
|
|
.map({$0 as? UIWindowScene})
|
|
.compactMap({$0})
|
|
.first?.windows
|
|
.filter({$0.isKeyWindow}).first
|
|
}
|
|
if window == nil {
|
|
window = UIApplication.shared.windows.first { $0.isKeyWindow }
|
|
}
|
|
if window == nil {
|
|
window = UIApplication.shared.keyWindow
|
|
}
|
|
|
|
return window
|
|
}
|
|
}
|
|
|
|
extension SPAPPTool {
|
|
///剪贴板复制
|
|
static func copy(text: String?) {
|
|
if let text = text {
|
|
let copy = UIPasteboard.general
|
|
copy.string = text
|
|
}
|
|
}
|
|
|
|
/**
|
|
震动反馈
|
|
*/
|
|
static func impactFeedbackOccurred() {
|
|
|
|
if #available(iOS 13.0, *) {
|
|
UIImpactFeedbackGenerator(style: .heavy).impactOccurred(intensity: 1)
|
|
} else {
|
|
UIImpactFeedbackGenerator(style: .heavy).impactOccurred()
|
|
}
|
|
}
|
|
}
|