ios - 有没有办法为`UIApplication.shared`添加`if(iOSApplicationExtension)`条件
问题描述
我正在尝试找到一种方法来添加检查条件是框架(不是主应用程序)中的扩展目标。 是否可以依靠 一些参数调整?#available(iOSApplicationExtension, *)
@objc public extension UIView {
var isAccessibilityCategory: Bool {
if #available(iOSApplicationExtension, *) {
return self.traitCollection.preferredContentSizeCategory.isAccessibilityCategory
} else {
return UIApplication.shared.preferredContentSizeCategory.isAccessibilityCategory
}
}
}
如何检测代码是否在主应用程序或应用程序扩展目标中运行?- 不起作用,因为框架不知道扩展目标
解决方案
为了解决这个问题,我用我创建的所有应用程序创建了一个枚举器,当用户启动应用程序时,我检查我所在的应用程序的包标识符并将其保存在 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
}
}
}
}
推荐阅读
- java - android本地化格式字符串错误
- java - 如何使用 Spring Boot 和 WildFly 11.0 配置 JNDI 数据源
- c++-cli - operator '^': 所有操作数必须使用 FileInfo 具有相同的枚举类型
- c# - 在调试函数以获取数组中字符的 XY 时需要帮助
- python - 在 python 中使用 pandas,numpy 是否有 pyspark.ml.feature StringIndexer 的替代方法?
- sql - 如何将值插入到带有引用的类型表中
- sql - GroupBy + 条件
- python - 从训练有素的分类器 python #Scikitlearn #SVM 进行预测
- serialization - OffsetDateTime 的 Gson 反序列化问题
- powershell - 使用输入列表在 PowerShell 中检索和导出 AD 安全组成员身份