在为iOS和iPadOS构建时,我想显示不同的视图。目前,我知道我能做到
import SwiftUI
struct ContentView: View {
#if targetEnvironment(macCatalyst)
var body: some View {
Text("Hello")
}
#else
var body: some View {
Text("Hello")
}
#endif
}显示macOS和iPadOS/iOS之间的不同视图(在Swift 4/5中引入)。但我如何区分后者呢?我似乎不能使用targetEnvironment...
发布于 2019-08-27 14:50:13
我在代码中使用了以下代码:
private var idiom : UIUserInterfaceIdiom { UIDevice.current.userInterfaceIdiom }
private var isPortrait : Bool { UIDevice.current.orientation.isPortrait }然后你可以这样做:
var body: some View {
NavigationView {
masterView()
if isPortrait {
portraitDetailView()
} else {
landscapeDetailView()
}
}
}
private func portraitDetailView() -> some View {
if idiom == .pad {
return Text("iPadOS")
} else {
return Text("iOS")
}
}发布于 2020-05-27 06:25:08
要返回不同的视图类型,可以使用AnyView橡皮擦类型:
if UIDevice.current.userInterfaceIdiom == .pad {
return AnyView(Text("Hello, World!"))
} else {
return AnyView(Rectangle().background(Color.green))
}发布于 2021-06-28 22:54:33
我添加了以下代码作为UIDevice的扩展。
extension UIDevice {
static var isIPad: Bool {
UIDevice.current.userInterfaceIdiom == .pad
}
static var isIPhone: Bool {
UIDevice.current.userInterfaceIdiom == .phone
}
}现在,在任何我可以调用UIDevice.isIPad或UIDevice.isIPhone的地方,我都可以知道是哪台设备。
https://stackoverflow.com/questions/57652242
复制相似问题