フレームワークの統合

macOS アプリの作成




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









プレビューその 1



LandmarkList.swift


  1. import SwiftUI
  2. struct LandmarkList: View {
  3. @EnvironmentObject var modelData: ModelData
  4. @State private var showFavoritesOnly = false
  5. var filteredLandmarks: [Landmark] {
  6. modelData.landmarks.filter { landmark in
  7. (!showFavoritesOnly || landmark.isFavorite)
  8. }
  9. }
  10. var body: some View {
  11. NavigationView {
  12. List {
  13. Toggle(isOn: $showFavoritesOnly) {
  14. Text("Favorites only")
  15. }
  16. ForEach(filteredLandmarks) { landmark in
  17. NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
  18. LandmarkRow(landmark: landmark)
  19. }
  20. }
  21. }
  22. .navigationTitle("Landmarks")
  23. .frame(minWidth: 300)
  24. }
  25. }
  26. }
  27. struct LandmarkList_Previews: PreviewProvider {
  28. static var previews: some View {
  29. LandmarkList()
  30. .environmentObject(ModelData())
  31. }
  32. }





プレビューその 2



LandmarkRow.swift


  1. import SwiftUI
  2. struct LandmarkRow: View {
  3. var landmark: Landmark
  4. var body: some View {
  5. HStack {
  6. landmark.image
  7. .resizable()
  8. .frame(width: 50, height: 50)
  9. .cornerRadius(5)
  10. Text(landmark.name)
  11. Spacer()
  12. if landmark.isFavorite {
  13. Image(systemName: "star.fill")
  14. .imageScale(.medium)
  15. .foregroundColor(.yellow)
  16. }
  17. }
  18. }
  19. }
  20. struct LandmarkRow_Previews: PreviewProvider {
  21. static var landmarks = ModelData().landmarks
  22. static var previews: some View {
  23. Group {
  24. LandmarkRow(landmark: landmarks[0])
  25. LandmarkRow(landmark: landmarks[1])
  26. }
  27. .previewLayout(.fixed(width: 300, height: 70))
  28. }
  29. }


プレビューその 3



LandmarkRow.swift


  1. .frame(width: 50, height: 50)
  2. .cornerRadius(5)
  3. VStack(alignment: .leading) {
  4. Text(landmark.name)
  5. .bold()
  6. Text(landmark.park)
  7. .font(.caption)
  8. .foregroundColor(.secondary)
  9. }
  10. Spacer()


プレビューその 4



LandmarkRow.swift


  1. }
  2. }
  3. .padding(.vertical, 4)
  4. }
  5. }
  6. struct LandmarkRow_Previews: PreviewProvider {


プレビューその 5



LandmarkRow.swift


  1. import SwiftUI
  2. struct LandmarkRow: View {
  3. var landmark: Landmark
  4. var body: some View {
  5. HStack {
  6. landmark.image
  7. .resizable()
  8. .frame(width: 50, height: 50)
  9. .cornerRadius(5)
  10. VStack(alignment: .leading) {
  11. Text(landmark.name)
  12. .bold()
  13. Text(landmark.park)
  14. .font(.caption)
  15. .foregroundColor(.secondary)
  16. }
  17. Spacer()
  18. if landmark.isFavorite {
  19. Image(systemName: "star.fill")
  20. .imageScale(.medium)
  21. .foregroundColor(.yellow)
  22. }
  23. }
  24. .padding(.vertical, 4)
  25. }
  26. }
  27. struct LandmarkRow_Previews: PreviewProvider {
  28. static var landmarks = ModelData().landmarks
  29. static var previews: some View {
  30. Group {
  31. LandmarkRow(landmark: landmarks[0])
  32. LandmarkRow(landmark: landmarks[1])
  33. }
  34. .previewLayout(.fixed(width: 300, height: 70))
  35. }
  36. }




プレビューその 6



LandmarkList.swift


  1. import SwiftUI
  2. struct LandmarkList: View {
  3. @EnvironmentObject var modelData: ModelData
  4. @State private var showFavoritesOnly = false
  5. var filteredLandmarks: [Landmark] {
  6. modelData.landmarks.filter { landmark in
  7. (!showFavoritesOnly || landmark.isFavorite)
  8. }
  9. }
  10. var body: some View {
  11. NavigationView {
  12. List {
  13. Toggle(isOn: $showFavoritesOnly) {
  14. Text("Favorites only")
  15. }
  16. ForEach(filteredLandmarks) { landmark in
  17. NavigationLink(destination: LandmarkDetail(landmark: landmark)) {
  18. LandmarkRow(landmark: landmark)
  19. }
  20. }
  21. }
  22. .navigationTitle("Landmarks")
  23. }
  24. }
  25. }
  26. struct LandmarkList_Previews: PreviewProvider {
  27. static var previews: some View {
  28. LandmarkList()
  29. .environmentObject(ModelData())
  30. }
  31. }


プレビューその 7



LandmarkRow.swift


  1. Text(landmark.name)
  2. .bold()
  3. #if !ios(watchOS)
  4. Text(landmark.park)
  5. .font(.caption)
  6. .foregroundColor(.secondary)
  7. #endif
  8. }
  9. Spacer()











セクション 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