描画とアニメーション

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

SwiftUI を使用すると、効果がどこに起こるかに関係なく、ビューまたはビューの状態への変更を個別にアニメーション化できます。SwiftUI は、これらの組み合わされた、重複する、中断可能なアニメーションのすべての複雑さを処理します。


このチュートリアルでは、ランドマークアプリの使用中にユーザーが行なうハイキングを追跡するためのグラフを含むビューをアニメーション化します。Animation(_:) 修飾子を使用すると、ビューをアニメーション化するのがいかに簡単であるかがわかります。


スタータープロジェクトをダウンロードしてこのチュートリアルに従うか、完成したプロジェクトを開いて自分でコードを調べてください。



20min


予想される時間

プロジェクト
ファイル

Xcode 12





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









    Hike.swift


  1. import Foundation
  2. struct Hike: Codable, Hashable, Identifiable {
  3. var id: Int
  4. var name: String
  5. var distance: Double
  6. var difficulty: Int
  7. var observations: [Observation]
  8. static var formatter = LengthFormatter()
  9. var distanceText: String {
  10. return Hike.formatter
  11. .string(fromValue: distance, unit: .kilometer)
  12. }
  13. struct Observation: Codable, Hashable {
  14. var distanceFromStart: Double
  15. var elevation: Range<Double>
  16. var pace: Range<Double>
  17. var heartRate: Range<Double>
  18. }
  19. }


    ModelData.swift


  1. import Foundation
  2. import Combine
  3. final class ModelData: ObservableObject {
  4. @Published var landmarks: [Landmark] = load("landmarkData.json")
  5. var hikes: [Hike] = load("hikeData.json")
  6. }
  7. func load<T: Decodable>(_ filename: String) -> T {
  8. let data: Data
  9. guard let file = Bundle.main.url(forResource: filename, withExtension: nil)
  10. else {
  11. fatalError("Couldn't find \(filename) in main bundle.")
  12. }
  13. do {
  14. data = try Data(contentsOf: file)
  15. } catch {
  16. fatalError("Couldn't load \(filename) from main bundle:\n\(error)")
  17. }
  18. do {
  19. let decoder = JSONDecoder()
  20. return try decoder.decode(T.self, from: data)
  21. } catch {
  22. fatalError("Couldn't parse \(filename) as \(T.self):\n\(error)")
  23. }
  24. }











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