Save 37% off PRO during our Black Friday Sale! »

iOS14のTips&Tricks

53e2d354b3299d64a54af680865516d5?s=47 Sato Takeshi
November 26, 2020

 iOS14のTips&Tricks

53e2d354b3299d64a54af680865516d5?s=128

Sato Takeshi

November 26, 2020
Tweet

Transcript

  1. iOS14のTips&Tricks 2020 年 11 月 26 日 佐藤タケシ Swift開発座談会 2020

    by Bitrise
  2. Who am I • Name • 佐藤タケシ(さとうたけし) • Company •

    Merpay, Inc.(2019/01 ~) • Role • Software Engineer (iOS) • Account • Twitter: @hatakenokakashi • Facebook: 佐藤剛士 • GitHub: SatoTakeshiX
  3. • SwiftUIを始める最適な一冊 • SwiftUIの基礎を徹底解説 ◦ レイアウトシステム ◦ 座標空間 ◦ データ管理

    ◦ UIコンポーネント • 実践的なアプリサンプル ◦ GitHub API ◦ お絵かきアプリ ◦ 写真フィルターアプリ • iOS 14対応 ◦ LazyVStack、LazyVGrid、 WidgetKit、@StateObjectなど 「SwiftUI開発レシピ amazon」で検 索!
  4. iOS14のTips&Tricks • WidgetKitのTimeline • @StateObjectと@ObservedObjectの違い

  5. WidgetKitのTimeline

  6. iOS 14からWidget登場

  7. TimelineProvider • Widgetを更新させる仕組み • 3つのメソッド ◦ placeholder ◦ getSnapshot ◦

    getTimeline
  8. placeholderメソッド • Widgetが最初に起動した際に呼ばれるメソッド • プレースホルダーとして表示 ◦ 暗黙的に.redacted(reason: .placeholder)をviewに追加 • データは素早く返却する必要あり

  9. getSnapshotメソッド • タイムラインの最初を表すメソッド • Widget Gallary用のコンテンツを設定できる • 非同期でデータ取得可能 • Widget

    Gallaryに表示されている場合は、データを素早く 返却するのが望ましい(サンプルデータなど)
  10. context.isPreviewでWidget Gallary

  11. getTimelineメソッド • タイムラインを作成するメソッド • Widgetがいつ更新するかを決定する

  12. Timelineのプロパティ • entries:[EntryType] • policy:TimelineReloadPolicy ◦ .atEnd ◦ .never ◦

    .after(_ date: Date)
  13. None
  14. None
  15. @StateObjectと @ObservedObject の違い

  16. @StateObjectと@ObservedObject • どちらも参照型のデータをSwiftUIで扱う PropertyWrapper • データモデルの型はObservableObjectプロトコルの準拠 が必要 • データモデルのライフサイクルが異なる

  17. データモデルのライフサイクル @StateObject • SwiftUIのViewが表示してから 非表示になるまで • View自身のプロパティとして保 持する場合に使用する @ObservedObject •

    bodyプロパティが更新されるま で • 親Viewから子Viewにデータモ デルを渡す場合に使用する
  18. None
  19. View自身でデータモデ ルを保持している

  20. None
  21. View自身でデータモデ ルを保持している

  22. None
  23. ボタンタップすると 親Viewのプロパティが更 新する。 すると親Viewのbodyが更 新される

  24. 子Viewとして配置

  25. None
  26. @ObservedObjectは親Viewから渡す時に使う

  27. Sample Code • https://gist.github.com/SatoTakeshiX/15446b78386 25c9c2959c2e50d692703

  28. 参考資料 • https://developer.apple.com/documentation/widge tkit/keeping-a-widget-up-to-date