270 likes | 334 Views
第 5 回 iPhone アプリ勉強会 Age 〜 日付と多言語対応. 竹ノ内 信寛. はじめに. アプリケーションの概要 前準備 チュートリアル: Age プロジェクトの作成 ビュー・アイテムの作成 アウトレットやアクションの接続 日付の期間の処理 x ib ファイルのローカライズ アイコンと名前のローカライズ エイジの改良・発展 本勉強会で使用する教科書. アプリケーションの概要. デイト・ピッカーで日付を設定すると その日付から今日までの時間を返すアプリ 表示単位を指定して、表示される数値を 変更できる.
E N D
第5回iPhoneアプリ勉強会Age 〜 日付と多言語対応 竹ノ内信寛
はじめに • アプリケーションの概要 • 前準備 • チュートリアル:Age • プロジェクトの作成 • ビュー・アイテムの作成 • アウトレットやアクションの接続 • 日付の期間の処理 • xibファイルのローカライズ • アイコンと名前のローカライズ • エイジの改良・発展 • 本勉強会で使用する教科書
アプリケーションの概要 • デイト・ピッカーで日付を設定するとその日付から今日までの時間を返すアプリ • 表示単位を指定して、表示される数値を変更できる
前準備 • 画像ファイルの準備 • アプリ作成に使用する画像ファイルを用意する • 用意した画像をImagesフォルダにまとめる • X-Codeを立ち上げる
チュートリアル:Age • STEP1:プロジェクトの作成 • 新規プロジェクト「Age」の作成 • 作成したプロジェクトのResourcesを選択しlmagesフォルダを追加 • AgeViewController.h , AgeViewController.mも同様に追加 (このとき古いファイルを削除する)
チュートリアル:Age • STEP2:ビュー・アイテムの作成-1 • ビューとライブラリを開く • ライブラリのData ViewsにあるDate Pickerを貼り付ける • Attributesインスペクタを開く • ModeをDateに変更する
チュートリアル:Age • STEP2:ビュー・アイテムの作成-2 • ライブラリのInput&ValuesにあるSegmented Controlを貼り付ける • Segmentsに「3」を入力してenterキーを押す • Titleに「Years」を入力する • ポップアップメニューでセグメントを変更し同様に「Months」 , 「Days」を入力する
チュートリアル:Age • STEP2:ビュー・アイテムの作成-3 • ライブラリのInput&ValuesにあるLabelを貼り付ける • Textに「12345」と入力する • Layoutのを中央揃えに変更する • フォントの大きさを変更する
チュートリアル:Age • STEP2:ビュー・アイテムの作成-4 • BirthdayラベルとAgeラベルを追加する • ビュー編集ウィンドウ上のラベルのハンドルをドラッグし位置やサイズを調整する
チュートリアル:Age • STEP3:アウトレットやアクションの接続-1 • XcodeでAgeViewController.hを開く • 以下のアウトレットとアクションを宣言する
チュートリアル:Age • STEP3:アウトレットやアクションの接続-2 • XibウィンドウのFile’s Ownerを右クリック • birthdayPickerをデイト・ピッカーに接続する • ageLabelをageラベルに接続する • resultLabelを計算結果表示ラベルに接続する • unitControlをセグメンティッドコントロールに接続する
チュートリアル:Age • STEP3:アウトレットやアクションの接続-3 • Calcアクションをデイト・ピッカーとセグメンティッド・コントロールに接続する • どちらもイベント・タイプをValue Changedとする • Xibファイルを保存する
チュートリアル:Age • STEP4:日付の期間の処理-1 • XcodeでAgeViewController.mを開く • calcアクションに対応するメソッドを追加する • コードの説明 NSDate *birthday = birthdayPicker.date; 誕生日の日付をデイト・ピッカーのdateプロパティから取得する NSDate *today = [NSDate date]; 今日の日付をNSDateクラスのインスタンスとして取得する
チュートリアル:Age • STEP4:日付の期間の処理-2 • 続・コードの説明 NSCalendar *gregorian = [[NSCalendaralloc] initWithCalendarIdentifier:NSGregorianCalendar]; デイト・ピッカーはグレゴリオ歴*で扱われるのでグレゴリオ暦のカレンダーを用意する NSUIntegerunitFlags = NSYearClaendarUnit; 期間の単位として年を表すNSYearCalendarUnitという定数を用いる * : グレゴリオ歴とは, 4年に1度の閏年と, 年数が100で割り切れて且つ400で割り切れない年は閏年としない, という調整を行い, 平均年を太陽年(約365.2422日)に近似した暦である.
チュートリアル:Age • STEP4:日付の期間の処理-3 • 続々・コードの説明 NSDateComponents *components = [gregoriancomponents:unitFlagsfromDate:birthdaytoDate:today options:0]; NSCalendarクラスのcomponents:fromDate:toDate:options:メソッドを使って日付の計算を行う NSInteger age = [components year]; Componentsは複数の単位を含めることができるため, 数値を取得するときに単位を指定する
チュートリアル:Age • ビルドして進行を押して動作確認
チュートリアル:Age • STEP5:xibファイルのローカライズ-1 • ユーザの使用言語に合わせて表示言語を変えるために, ローカライズを行う • AgeViewController.xibを選択し, アクションから「情報を見る」を選択 • 「ファイルをローカライズ可能にする」を選択する • 一般タグから「Japanese」というローカリゼーションを追加する
チュートリアル:Age • STEP5:xibファイルのローカライズ-2 • プロジェクトウィンドウのAgeViewController.xib (Japanese)をダブルクリック • Viewのラベルやセグメンティド・コントロールを対応する日本語に変更
チュートリアル:Age • STEP5:xibファイルのローカライズ-3 • デイト・ピッカーのLocaleを日本語(日本)に変更 • AgeViewController.xibを保存して完了 • これで日本語環境化では日本語表示になる • ローカライズが反映されない場合はファイルのクリーニングを行う
チュートリアル:Age • STEP6:アイコンと名前のローカライズ-1 • Xibファイルと同様にアプリのアイコンのローカライズを行う • ResoucesからIcon.pngを選択してローカライズする • うまく反映されない場合はAge-Info.plistファイルを開きIconにIcon.pngと入力する
チュートリアル:Age • STEP6:アイコンと名前のローカライズ-2 • 同様にアプリの名前のローカライズを行う • Resoucesを選択して新規ファイルを作成 • 空のファイルを選択し「InfoPlist.strings」という名前で保存
チュートリアル:Age • STEP6:アイコンと名前のローカライズ-3 • InfoPlist.stringsに以下のテキストを入力し保存 • InfoPlist.stringsをローカライズ可能にして「Japanese」を追加 • InfoPlist.stringsのJapaneseを選択してテキストを以下のように編集
チュートリアル:Age • ビルドして進行を押してホーム画面でのアイコンの表示を確認する • 設定から表示言語と書式を日本語にして日本語環境での表示を確認する
チュートリアル:Age • STEP7:コード中テキストのローカライズ • Resourcesを選択して空のファイルを作成 • ファイル名を「Localizable.strings」として保存 • Localizable.stringsのテキストを以下のように編集して保存 • Localizable.stringsをローカライズしてJapaneseの方のテキストを以下のように編集して保存
チュートリアル:Age • ビルドして進行を押して表示を確認
チュートリアル:Age • STEP8:エイジの改良・発展 • 新しいアイディアをアプリケーションに実現してみよう • 以下にいくつかの例を示す 1 年齢を時間単位, 分単位, 秒単位でも表示できるようにする 2 任意の日における年齢が表示できるようにする 3 起点となる日付と日数を設定すると, 終了日となる日付を表示できるようにする 4 グレゴリオ歴以外の暦のカレンダーを表示する 5 時分秒単位の時間計算機を作る
おわりに • アプリケーションの概要 • 前準備 • チュートリアル:Age • ビュー・アイテムの作成 • アウトレットやアクションの接続 • 日付の期間の処理 • xibファイルのローカライズ • アイコンと名前のローカライズ • コード中テキストのローカライズ • エイジの改良・発展 • 次回の予定 • “iPhoneSDKの教科書”のサンプルプログラムを勉強 • Counter • Smash • Balance • Clock • Age • Pile