oh-my-docs

Summary for developers


Project maintained by italkso Hosted on GitHub Pages — Theme by mattgraham

创建跨 Apple 生态系统的应用

SwiftUI 处理跨平台的思路是,代码统一,但是保证各平台体验的独立性。比如 Toggle 控件,在 iOS 、 iPadOS和 watchOS 中显示为椭圆形的「开关」,而在 macOS 中显示为「勾选框」,在 APPLE TV 中显示的是 「点入式菜单」。

我们可以使用 SwiftUI 在同一 Xcode 项目中添加支持 Mac、Apple TV、Apple Watch、iPhone、iPad 等平台的代码。不过,在调用某个框架时,你应当注意查看 APPLE 开发者文档,了解该框架中内容的可用性,从而判断 UI 在不同平台上的可用性。

Mac 应用运行方式

代码

import SwiftUI

struct ContentView: View {
    @State private var helloText = ""
    @State private var toggleOn = false

    var body: some View {
        VStack {
            Spacer()
            Toggle("Show Marked Only", isOn: $toggleOn)
                .padding()
                .font(.headline)
            Spacer()
            Text(helloText)
                .font(.title)
                .padding()
                .onAppear {
                    #if os(iOS)
                        helloText = "Hello, iOS"
                    #else
                        helloText = "Hello, macOS"
                    #endif
                    if UIDevice.current.userInterfaceIdiom == .pad {
                        helloText = "Hello, iPadOS"
                    }
                }
            Spacer()
        }
    }
}struct ContentView View {
    @State var text = ""
    
    var body: some View {
        VStack {
            Text(text)
            	.onAppear {
                    #if os(iOS)
                    text = "iOS"
                    #else
                    text = "macOS"
                    #eddif
                    
                	if UIDevice.current.userInterfaceIdiom == .pad {
                        text = "iPadOS"
                    }
            	}
        }
    }
}