アプリのデザインとレイアウト

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





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












    CategoryRow.swift


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


プレビュー その 1



    CategoryRow.swift


  1. import SwiftUI
  2. struct CategoryRow: View {
  3. var categoryName: String
  4. var items: [Landmark]
  5. var body: some View {
  6. Text("Hello, World!")
  7. }
  8. }
  9. struct CategoryRow_Previews: PreviewProvider {
  10. static var landmarks = ModelData().landmarks
  11. static var previews: some View {
  12. CategoryRow(
  13. categoryName: landmarks[0].category.rawValue,
  14. items: Array(landmarks.prefix(3))
  15. )
  16. }
  17. }


上記のリストの 8 行目を以下のように書き換え、書き加えます。


    CategoryRow.swift


  1. var body: some View {
  2. Text(categoryName)
  3. .font(.headline)
  4. }
  5. }


プレビュー その 2



さらに上記のリストの 8 行目を以下のように書き加えます。


    CategoryRow.swift


  1. var body: some View {
  2. VStack(alignment: .leading) {
  3. Text(categoryName)
  4. .font(.headline)
  5. HStack(alignment: .top, spacing: 0) {
  6. ForEach(items) { landmark in
  7. Text(landmark.name)
  8. }
  9. }
  10. }
  11. }
  12. }


プレビュー その 3



上記のリストの 11 行目以降に以下のように書き足します。



    CategoryRow.swift


  1. VStack(alignment: .leading) {
  2. Text(categoryName)
  3. .font(.headline)
  4. .padding(.leading, 15)
  5. .padding(.top, 5)
  6. ScrollView(.horizontal, showsIndicators: false) {
  7. HStack(alignment: .top, spacing: 0) {
  8. ForEach(items) { landmark in
  9. Text(landmark.name)
  10. }
  11. }
  12. }
  13. .frame(height: 185)
  14. }
  15. }
  16. }
  17. struct CategoryRow_Previews: PreviewProvider {
  18. static var landmarks = ModelData().landmarks
  19. static var previews: some View {
  20. CategoryRow(
  21. categoryName: landmarks[0].category.rawValue,
  22. items: Array(landmarks.prefix(4))
  23. )
  24. }
  25. }


プレビュー その 4



    CategoryItem.swift


  1. import SwiftUI
  2. struct CategoryItem: View {
  3. var landmark: Landmark
  4. var body: some View {
  5. VStack(alignment: .leading) {
  6. landmark.image
  7. .resizable()
  8. .frame(width: 155, height: 155)
  9. .cornerRadius(5)
  10. Text(landmark.name)
  11. .font(.caption)
  12. }
  13. .padding(.leading, 15)
  14. }
  15. }
  16. struct CategoryItem_Previews: PreviewProvider {
  17. static var previews: some View {
  18. CategoryItem(landmark: ModelData().landmarks[0])
  19. }
  20. }


プレビュー その 5



    CategoryRow.swift


  1. HStack(alignment: .top, spacing: 0) {
  2. ForEach(items) { landmark in
  3. CategoryItem(landmark: landmark)
  4. }
  5. }


プレビュー その 6







セクション 1セクション 2セクション 3
セクション 4セクション 5
セクション 101セクション 102セクション 103
セクション 104セクション 105






目次
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

    セクション 5


    セクション 101

    セクション 102

    セクション 103

    セクション 104

    セクション 105

    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