web-dev-qa-db-ja.com

SwiftUIで、特定のOSターゲットに対してのみ修飾子を使用することは可能ですか?

良い一日! SwiftUIで、特定のOSターゲットにのみ修飾子を使用することは可能ですか?次のコードでは、iOSターゲットには存在しないため、修飾子.listStyle(SidebarListStyle())をMacOSターゲットにのみ使用したいと思います。助けてくれてありがとう。

import SwiftUI

struct ContentView: View {

  @State var selection: Int?

  var body: some View {

    HStack() {
      NavigationView {
        List () {
          NavigationLink(destination: FirstView(), tag: 0, selection: self.$selection) {
            Text("Click Me To Display The First View")
          } // End Navigation Link

          NavigationLink(destination: SecondView(), tag: 1, selection: self.$selection) {
            Text("Click Me To Display The Second View")
          } // End Navigation Link

        } // End list
        .frame(minWidth: 350, maxWidth: 350)
        .onAppear {
            self.selection = 0
        }

      } // End NavigationView
        .listStyle(SidebarListStyle())
        .frame(maxWidth: .infinity, maxHeight: .infinity)

    } // End HStack
  } // End some View
} // End ContentView

struct ContentView_Previews: PreviewProvider {
  static var previews: some View {
    ContentView()
  }
}
3
Wild8x

WorkingDog、私は非常にシンプルなコードでエレガントなコードを試して、ターゲットに応じてテキストの色を変更します...しかし、テキストは両方のターゲットで青のままで、MacOSでは赤になりません!

import SwiftUI

struct ContentView: View {

    var body: some View {

      #if os(macOS)
      return monText.foregroundColor(Color.red)
      #elseif os(iOS)
       return monText.foregroundColor(Color.blue)
      #endif
      }

  var monText: some View {
    Text("Hello, World!")
    }
}

struct ContentView_Previews: PreviewProvider {
    static var previews: some View {
        ContentView()
    }
}
0
Wild8x