基礎から学ぶSwiftUI
C&R研究所
著者:林晃
PROLOGUE
本書について
CHAPTER 01 SwiftUIを使ったアプリ開発
001 SwiftUIの概要
SwiftUIとは何か?
SwiftUIの特徴
COLUMN 「Write once,run anywhere」ではない
002 はじめてのSwiftUIアプリ
iOSアプリのプロジェクトを作成する
SwiftUIアプリのファイル構成
SwiftUIのユーザーインターフェイス編集
COLUMN 「UIKit」の「UIView」が現れない
COLUMN プレビューエリアの表示切り替え
COLUMN モディファイアによるビュー生成とMetalによるレンダリング
CHAPTER 02 SwiftUIのビューとレイアウトシステム
0003 SwiftUIのビュー
スタック
コントロール
COLUMN SwiftUIで使用するアセットカタログ
COLUMN 「SF Symbols」について
フォーム
カスタムビュー
004 他言語表示への対応
ローカライズ文字列ファイルについて
COLUMN ローカライズ文字列ファイルのテキストエンコーディング
ローカライズ文字列ファイルの追加
プロジェクトで使用する言語の設定
SwiftUIでローカライズ文字列を使用する
005 SwiftUIでのフォントの指定
ダイナミックタイプについて
ダイナミックタイプの指定方法
任意のサイズのフォントの指定方法
006 色と画像のレンダリング
文字色を変更する
ビューの背景色を変更する
アセットカタログで色を定義して使用する
画像のレンダリングモードと色合いの指定
007 SwiftUIのレイアウトシステム
スタックによる位置揃え
「Spacer」による位置調整
「padding」モディファイアを使った余白の追加
位置やサイズの指定
「ScrollView」を使ったビューのスクロール
セーフエリア外へのビューの拡張
CHAPTER 03 バインディングとデータフロー
008 SwiftUIでのデータフロー
バインディングについて
SwiftUIでのデータフローの設計方法
009 ビューとデータを同期させる
「State」について
プロパティをビューにバインディングさせる
「ObservedObject」について
010 バインディング対応のカスタムビュー
「Binding」について
カスタムビューでバインディングを使用する
011 「EnvironmentObject」の利用
「EnvironmentObject」経由でのデータ渡し
「State」「ObservedObject」「EnvironmentObject」の使い分け
CHAPTER 04 複数のビューとビュー遷移
012 NavigationView
ナビゲーションバーについて
ナビゲーションビューを表示する
013 TabView
タブビューを表示する
014 シート
シートを表示する
シートを閉じる
COLUMN 「isPresented」がバインディングになっているのはなぜか?
015 Alert
ボタンを1つだけ持ったアラートを表示する
ボタンを2つ持ったアラートを表示する
何かを削除するときの確認用のアラートを表示する
016 ActionSheet
「ActionSheet」を表示する
017 ビューの動的生成
単純な値のコレクションからビューを作成する
独自のタイプのコレクションからキーパスを指定してビューを作成する
「Identifiable」に適合するタイプのコレクションからビューを作成する
018 List
「List」を表示する
「List」と「ForEach」の組み合わせ
「List」と「NavigationView」の組み合わせ
019 編集モード
「List」のセルの並び替え
「List」のセルの削除
編集モードの取得
COLUMN 「ContentView」の「body」で直接判定すると正しく動作しない
020 ビュー遷移時の処理
ビューが表示/非表示されたときに処理を行う
シートが閉じられたときに処理を行う
CHAPTER 05 グラフィック描画
021 シェイプの描画
シェイプの共通事項
Rectangle
RoundedRectangle
Capsule
Circle
Ellipse
022 Path
点の移動
パスに直接を追加する
パスに円弧を追加する
パスにベジェ曲線を追加する
パスに楕円を追加する
パスに四角形を追加する
パスに角丸四角形を追加する
パスを塗りつぶす
「GeometryReader」と「Path」を組み合わせる
023 ビューとの組み合わせ
「background」モディファイアとシェイプの組み合わせ
クリッピングに使う
マスクを適用する
024 グラデーション
LinearGradient
RadialGradient
AngularGradient
025 エフェクトの適用
エフェクトを適用するモディファイア
blur
opacity
CHAPTER 06 アニメーション
026 ビューの変形
ビューの位置を移動する
ビューを回転させる
ビューを拡大・縮小させる
027 アニメーションを行う
「animation」モディファイアを使ったアニメーション
「withAnimation」関数を使ったアニメーション
028 トランジションを適用する
transition
移動の方向を指定する
トランジションを組み合わせる
CHAPTER 07 UIKitとの組み合わせ
029 UIKitとSwiftUIの違い
クラスと構造体
宣言的と命令的
COLUMN UIKit以外のネイティブフレームワークについて
030 SwiftUIの中でUIKitを使用する
「UIView」をラップするビュー
コーディネーターについて
デリゲートを実装する
ターゲットとアクションを実装する
「UIView」への値変更の反映処理を実装する
「UIViewController」をラップするビュー
データソースを実装する
状態駆動で考える
031 UIKitの中でSwiftUIを使用する
SwiftUIのビューを表示する
SwiftUIのビュー内の変更に対応する
COLUMN 「UIHostingVontroller」クラスは「SceneDelegate」クラスでも使われている
CHAPTER 08 アクセシビリティ
032 iPhoneやiPadのアクセシビリティ機能について
VoiceOver
ディスプレイ調整
ダイナミックタイプ
ズーム
音声コントロール
その他
033 SwiftUIのアクセシビリティの自動対応
アプリの動作テストについて
表示されているテキストの読み上げ
テキストの読み上げとローカライズ設定
音声コントロールへの対応
034 アクセシビリティのカスタマイズ
ラベルの設定
カスタムアクションの設定
アクセシビリティグループを作る
索引