2

知道只有在 iOS 版本超过 iOS 13 的情况下我才能导入 SwiftUICharts 框架吗?我通过 File > Swift Package > add package dependency 添加了这个框架。我的应用目标必须是 iOS 10。

我将此框架导入到 swiftui 控制器中,该控制器只会显示目标是否超过 iOS 14,因此可以在那里使用它。但我不知道怎么做。在这种情况下,一个简单的 @available 不起作用。

在此处输入图像描述

编辑。这是我的代码:

分析新控制器:

 #if !arch(arm)
 import SwiftUI


 @available(iOS 14, *)
 struct AnalyticsNew: View {
     var body: some View {
         Home()
     }
 }

 @available(iOS 14, *)
 struct AnalyticsNew_Previews: PreviewProvider {
     static var previews: some View {
         AnalyticsNew()
     }
 }

 @available(iOS 14, *)
 struct Home : View {
 //... some code
 }

 #endif

根据 iOS 版本匹配正确控制器的 AnalyticsView 控制器:

#if canImport(SwiftUI)
import SwiftUI
#endif
import UIKit

class AnalyticsView: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
    
        let child = createViewController()
        addChild(child)

        child.view.autoresizingMask = [.flexibleWidth, .flexibleHeight]
        child.view.frame = view.bounds
        view.addSubview(child.view)

        child.didMove(toParent: self)
    }

    func createViewController() -> UIViewController {
    
        if #available(iOS 14, *) {
            #if !arch(arm) //compatible SwiftUI IOS <10
            return UIHostingController(rootView: AnalyticsNew())
            #else
            return AnalyticsOld()
            #endif
        } else {
            return AnalyticsOld()
        }
    }
}
4

0 回答 0