フレームワークの統合

macOS アプリの作成




訳注:以下、必要な場所においては Mac と iPhone 両方のセクションを提供しています。
Mac → セクション 7、iPhone → セクション 107 とします。









MapView.swift


  1. import SwiftUI
  2. import MapKit
  3. struct MapView: View {
  4. var coordinate: CLLocationCoordinate2D
  5. @State private var region = MKCoordinateRegion()
  6. enum Zoom: String, CaseIterable, Identifiable {
  7. case near = "Near"
  8. case medium = "Medium"
  9. case far = "Far"
  10. var id: Zoom {
  11. return self
  12. }
  13. }
  14. var body: some View {
  15. Map(coordinateRegion: $region)
  16. .onAppear {
  17. setRegion(coordinate)
  18. }
  19. }
  20. private func setRegion(_ coordinate: CLLocationCoordinate2D) {
  21. region = MKCoordinateRegion(
  22. center: coordinate,
  23. span: MKCoordinateSpan(latitudeDelta: 0.2, longitudeDelta: 0.2)
  24. )
  25. }
  26. }
  27. struct MapView_Previews: PreviewProvider {
  28. static var previews: some View {
  29. MapView(coordinate: CLLocationCoordinate2D(latitude: 34.011_286, longitude: -116.166_868))
  30. }
  31. }


MapView.swift


  1. @State private var region = MKCoordinateRegion()
  2. @AppStorage("MapView.zoom")
  3. private var zoom: Zoom = .medium
  4. enum Zoom: String, CaseIterable, Identifiable {
  5. case near = "Near"


MapView.swift


  1. var id: Zoom {
  2. return self
  3. }
  4. }
  5. var delta: CLLocationDegrees {
  6. switch zoom {
  7. case .near: return 0.02
  8. case .medium: return 0.2
  9. case .far: return 2
  10. }
  11. }
  12. var body: some View {
  13. Map(coordinateRegion: $region)
  14. .onAppear {
  15. setRegion(coordinate)
  16. }
  17. }
  18. private func setRegion(_ coordinate: CLLocationCoordinate2D) {
  19. region = MKCoordinateRegion(
  20. center: coordinate,
  21. span: MKCoordinateSpan(latitudeDelta: delta, longitudeDelta: delta)
  22. )
  23. }
  24. }


MapView.swift


  1. var body: some View {
  2. Map(coordinateRegion: .constant(region))
  3. }
  4. var region: MKCoordinateRegion {
  5. MKCoordinateRegion(
  6. center: coordinate,
  7. span: MKCoordinateSpan(latitudeDelta: delta, longitudeDelta: delta)
  8. )
  9. }
  10. }


LandmarkSettings.swift


  1. import SwiftUI
  2. struct LandmarkSettings: View {
  3. var body: some View {
  4. Text("Hello, World!")
  5. }
  6. }
  7. struct LandmarkSettings_Previews: PreviewProvider {
  8. static var previews: some View {
  9. LandmarkSettings()
  10. }
  11. }


LandmarkSettings.swift


  1. import SwiftUI
  2. struct LandmarkSettings: View {
  3. @AppStorage("MapView.zoom")
  4. private var zoom: MapView.Zoom = .medium
  5. var body: some View {
  6. Text("Hello, World!")
  7. }
  8. }


プレビューその 1



LandmarkSettings.swift


  1. private var zoom: MapView.Zoom = .medium
  2. var body: some View {
  3. Form {
  4. Picker("Map Zoom:", selection: $zoom) {
  5. ForEach(MapView.Zoom.allCases) { level in
  6. Text(level.rawValue)
  7. }
  8. }
  9. .pickerStyle(InlinePickerStyle())
  10. }
  11. .frame(width: 300)
  12. .navigationTitle("Landmark Settings")
  13. .padding(80)
  14. }
  15. }


LandmarksApp.swift


  1. import SwiftUI
  2. @main
  3. struct LandmarksApp: App {
  4. @StateObject private var modelData = ModelData()
  5. var body: some Scene {
  6. let mainWindow = WindowGroup {
  7. ContentView()
  8. .environmentObject(modelData)
  9. }
  10. #if os(macOS)
  11. mainWindow
  12. .commands {
  13. LandmarkCommands()
  14. }
  15. #else
  16. mainWindow
  17. #endif
  18. #if os(watchOS)
  19. WKNotificationScene(controller: NotificationController.self, category: "LandmarkNear")
  20. #endif
  21. #if os(macOS)
  22. Settings {
  23. LandmarkSettings()
  24. }
  25. #endif
  26. }
  27. }











セクション 1セクション 2セクション 3セクション 4
セクション 5セクション 6セクション 7
セクション 101セクション 102セクション 103セクション 104
セクション 105セクション 106セクション 107






目次
Xcode の新機能

フレームワーク

  • SwiftUI

  • ビューの作成と結合

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    ビルドリストとナビゲーション

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6

    セクション 7

    セクション 8


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    セクション 107

    セクション 108

    ユーザー入力の処理

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    パスとシェイプの描画

    セクション 1

    セクション 2

    セクション 3

    セクション 4


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    ビューと移行のアニメーション

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    複雑なインターフェースの構成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    UI コントロールを扱う

    セクション 1

    セクション 2

    セクション 3

    セクション 4


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    UIKit とのインターフェース

    セクション 1

    セクション 2

    セクション 3

    セクション 4


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    watchOS アプリの作成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    macOS アプリの作成

    セクション 1

    セクション 2

    セクション 3

    セクション 4

    セクション 5

    セクション 6

    セクション 7


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    セクション 106

    セクション 107