今回はiPhoneで今日のウィジェットを表示させるアプリのサンプルを作ります。
iOS8 からの新機能、 Today ウィジェット、通知センターの左側に表示されます。
はじめにウィジェットの概念について。
既存のアプリに付属する拡張のようなものです。
ウィジェット単体では申請できません。既存のアプリに追加する形となります。
既存のアプリにエクステンションを追加するイメージ
あくまで、アプリに内包されて配布するものです。
以下、簡素化したステップ
1. 新規アプリ開発、Single View Applicationで言語はObjective-cを選択。
2. File > New > Target にて Application ExtensionにてToday Extensionを選択
3. Product NameをWidgetと入力、finishを選択したあと、Scheme追加ダイアログが出て、activateを選択。
4. TargetのWidgetを確認すると、Link Binary With LibrariesにNotificationCenter.frameworkが入っていることを確認。
5. デフォルトでビルド実行すると、ノティフィケーションセンター左の今日のウィジェットを確認すると、アプリ名の中に"Hello World”を確認。
6. ウィジェットで表示されるアプリ名の変更はinfo.plistのBundle display nameを変更
7. MainInterface.storyboardにて、label, progress viewを追加
8. Constraintsを追加。それぞれの制約を設定、詳細は以下github。
9. ビルドして実行、確認。※ビルドターゲットはエクステンションの方を選択
10. リアルなデータを結びつける。
11. labelとprogress viewをアウトレット接続する,propertyの追加
12. システムサイズとフリー、ユーズドのサイズを測定するメソッドを定義
13. それらをnsuserdefaultでキャッシュする。
14. そしてそれらをUIに表示、更新する
15. 値に更新があった場合のメソッドを定義 ビルド実行で確認。値の再計算メソッド。
16. もっと情報を表示させる。まずUIの変更、それぞれの高さを設定。
17. 詳細ラベルの更新。
18. タッチの検出と値の更新。
19. アニメーションの追加。
20. ビルド実行で確認
ソースはこちら
参考: iOS 8: Creating a Today Widget