iOS14のTips&Tricks
by
Sato Takeshi
Link
Embed
Share
Beginning
This slide
Copy link URL
Copy link URL
Copy iframe embed code
Copy iframe embed code
Copy javascript embed code
Copy javascript embed code
Share
Tweet
Share
Tweet
Slide 1
Slide 1 text
iOS14のTips&Tricks 2020 年 11 月 26 日 佐藤タケシ Swift開発座談会 2020 by Bitrise
Slide 2
Slide 2 text
Who am I ● Name ● 佐藤タケシ(さとうたけし) ● Company ● Merpay, Inc.(2019/01 ~) ● Role ● Software Engineer (iOS) ● Account ● Twitter: @hatakenokakashi ● Facebook: 佐藤剛士 ● GitHub: SatoTakeshiX
Slide 3
Slide 3 text
● SwiftUIを始める最適な一冊 ● SwiftUIの基礎を徹底解説 ○ レイアウトシステム ○ 座標空間 ○ データ管理 ○ UIコンポーネント ● 実践的なアプリサンプル ○ GitHub API ○ お絵かきアプリ ○ 写真フィルターアプリ ● iOS 14対応 ○ LazyVStack、LazyVGrid、 WidgetKit、@StateObjectなど 「SwiftUI開発レシピ amazon」で検 索!
Slide 4
Slide 4 text
iOS14のTips&Tricks ● WidgetKitのTimeline ● @StateObjectと@ObservedObjectの違い
Slide 5
Slide 5 text
WidgetKitのTimeline
Slide 6
Slide 6 text
iOS 14からWidget登場
Slide 7
Slide 7 text
TimelineProvider ● Widgetを更新させる仕組み ● 3つのメソッド ○ placeholder ○ getSnapshot ○ getTimeline
Slide 8
Slide 8 text
placeholderメソッド ● Widgetが最初に起動した際に呼ばれるメソッド ● プレースホルダーとして表示 ○ 暗黙的に.redacted(reason: .placeholder)をviewに追加 ● データは素早く返却する必要あり
Slide 9
Slide 9 text
getSnapshotメソッド ● タイムラインの最初を表すメソッド ● Widget Gallary用のコンテンツを設定できる ● 非同期でデータ取得可能 ● Widget Gallaryに表示されている場合は、データを素早く 返却するのが望ましい(サンプルデータなど)
Slide 10
Slide 10 text
context.isPreviewでWidget Gallary
Slide 11
Slide 11 text
getTimelineメソッド ● タイムラインを作成するメソッド ● Widgetがいつ更新するかを決定する
Slide 12
Slide 12 text
Timelineのプロパティ ● entries:[EntryType] ● policy:TimelineReloadPolicy ○ .atEnd ○ .never ○ .after(_ date: Date)
Slide 13
Slide 13 text
No content
Slide 14
Slide 14 text
No content
Slide 15
Slide 15 text
@StateObjectと @ObservedObject の違い
Slide 16
Slide 16 text
@StateObjectと@ObservedObject ● どちらも参照型のデータをSwiftUIで扱う PropertyWrapper ● データモデルの型はObservableObjectプロトコルの準拠 が必要 ● データモデルのライフサイクルが異なる
Slide 17
Slide 17 text
データモデルのライフサイクル @StateObject ● SwiftUIのViewが表示してから 非表示になるまで ● View自身のプロパティとして保 持する場合に使用する @ObservedObject ● bodyプロパティが更新されるま で ● 親Viewから子Viewにデータモ デルを渡す場合に使用する
Slide 18
Slide 18 text
No content
Slide 19
Slide 19 text
View自身でデータモデ ルを保持している
Slide 20
Slide 20 text
No content
Slide 21
Slide 21 text
View自身でデータモデ ルを保持している
Slide 22
Slide 22 text
No content
Slide 23
Slide 23 text
ボタンタップすると 親Viewのプロパティが更 新する。 すると親Viewのbodyが更 新される
Slide 24
Slide 24 text
子Viewとして配置
Slide 25
Slide 25 text
No content
Slide 26
Slide 26 text
@ObservedObjectは親Viewから渡す時に使う
Slide 27
Slide 27 text
Sample Code ● https://gist.github.com/SatoTakeshiX/15446b78386 25c9c2959c2e50d692703
Slide 28
Slide 28 text
参考資料 ● https://developer.apple.com/documentation/widge tkit/keeping-a-widget-up-to-date