gpt4 book ai didi

ios - 有没有办法为 `if (iOSApplicationExtension)` 添加 `UIApplication.shared` 条件

转载 作者:行者123 更新时间:2023-12-05 00:23:32 25 4
gpt4 key购买 nike

我正在尝试找到一种方法来添加检查条件是扩展目标 在框架中 (不是主应用程序)。是否有可能依赖 #available(iOSApplicationExtension, *)有一些参数调整?

@objc public extension UIView {
var isAccessibilityCategory: Bool {
if #available(iOSApplicationExtension, *) {
return self.traitCollection.preferredContentSizeCategory.isAccessibilityCategory
} else {
return UIApplication.shared.preferredContentSizeCategory.isAccessibilityCategory
}
}
}

How to detect if code is running in Main App or App Extension Target? - 不起作用,因为框架不知道扩展目标

最佳答案

为了解决这个问题,我用我创建的所有应用程序创建了一个枚举器,当用户启动应用程序时,我检查我所在的应用程序的捆绑标识符,并将其保存在 appManager 中,因此在我可以执行一些更改后应用程序类型也在框架中。

这是我的枚举:

public enum MyApp: Int, CaseIterable {
case sysReserved = 0
case app1 = 1

public var applicationId : [String] {
switch self {
case .sysReserved:
return [""]
case .parametersEditor:
return ["com.team.app1"]
}
}
}

这是我的 AppManager
class AppManager: UIApplication {

var CURRENT_APP: MyApp = .sysReserved

override init() {
super.init()
getCurrentApplicationInfo()
}

internal func getCurrentApplicationInfo() {
CURRENT_VERSION_NUM = Bundle.main.object(forInfoDictionaryKey: "CFBundleShortVersionString") as! String
CURRENT_BUILD_NUM = Bundle.main.object(forInfoDictionaryKey: "CFBundleVersion") as! String
let appName = Bundle.main.object(forInfoDictionaryKey: "CFBundleIdentifier") as! String
CURRENT_APP = .sysReserved

for app in Application.allCases {
if app.applicationId.contains(appName) {
CURRENT_APP = app
}
}
}
}

关于ios - 有没有办法为 `if (iOSApplicationExtension)` 添加 `UIApplication.shared` 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61772606/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com