小技
ここでは、iPhone開発時のちょっとした小技を紹介します。
もしかしたら、既に知っている内容もあるかもしれませんがご了承ください。m(_ _)m
スプラッシュ画面
iPhoneアプリを起動すると、タイトル画面が表示されるアプリはよくあります。
そこで、このタイトル画面の表示のされ方をよく見ると画面の奥から迫ってくるような感じで表示されるものが多いのですが、私の作ったアプリだとそのように表示されないので調べてみました。
すると、スプラッシュ画面(画像)というものを用意すれば自動的にそのように表示されるということが分かりました。
そのスプラッシュ画面は、以下の条件に従った画像を用意すればOKです。
- 480x320 のpng形式の画像
- 画像ファイル名は「Default.png」
- 「Resources」フォルダ直下に配置
また、画面解像度が960x480のiPhone4、4Sにも対応させるためには、以下の条件の画像も同時に作成しておけば、iPhone4で起動した場合は自動でこちらが使われます。
- 960x480 のpng形式の画像
- 画像ファイル名は「Default@2x.png」
- 「Resources」フォルダ直下に配置
アイコン画像の光が当たっているような効果を無くしたい
ホーム画面に表示されるアイコン画像には自動的に光が当たったような効果が付きますが、この効果を無くすことができます。
やり方は、Info.plistに以下の条件のKeyとValueを設定すればOKです。
Key:Icon already includes gloss effects
Value:YES(Xcode上ではチェックボックスが表示されるのでチェックを付ける)
(効果あり) → (効果なし)
※Info.plistページも合わせてご覧ください。
バックスラッシュを入力したい!
Macの日本語環境でバックスラッシュ(「/」の左右対称の記号)を入力しようとしても、普通にキーを押しただけでは「\」が表示されてしまい入力できません。
バックスラッシュを入力したい時は、[option]キー+[\]キーを押すと、バックスラッシュが入力できます。
クラスやメソッドの定義してある箇所を見たい
ソースコード上で定義を見たいクラス名やメソッド名の上で右クリック([Control]+マウスクリック)します。
するとメニューが出てくるのでそこで「定義へジャンプ」を選択すると、定義してあるソースコードが表示されます。
※Xcode4では表記が全て英語になってしまい、「Jump to Definition」という項目名になりました・・
JavaでいうtoString()みたいなメソッドはないの?
Objective-CではNSObjectクラスにある「description」がJavaでいうtoString()メソッドに該当します。
これを知っていると、ログにちょっと出力したい時などに重宝します。
※NSObjectページも合わせてご覧ください。
double型→int型に変換したい
double型の値をint型にそのまま代入すると変な値になってしまいます。
正しく変換したい場合は以下のようにすればOKです。
double d = 2.5;
int i = (int)d;
こうするとiには2が代入されます。(小数点以下は切り捨てられます)
逆に、int型→double型に変換したい場合はそのまま代入すればOKです。
int i = 5;
double d = i;
こうするとdには5.000000が代入されます。
アプリをマルチタスク非対応にしたい
iOS4からマルチタスク対応となり、マルチタスク対応のアプリはアプリをホームボタンで閉じても裏で動いている(もしくは閉じたときの状態を保持している)状態となっています。
XCodeでiPhoneアプリを開発すると、デフォルトでマルチタスク対応アプリとなっています。
マルチタスク対応だとホームボタンでアプリを閉じた後に再び起動すると、閉じたときの状態が再現された状態で起動してしまいますが、多くの場合起動時には初めから起動して欲しいことが多いと思います。
こうした場合にマルチタスク機能をオフにしたいと思いますが、やり方はとても簡単です。
アプリのInfo.plistに「Application does not run in background」というキーを追加すると、値のところに
チェックボックスが表示されるのでそれにチェックを入れれば、マルチタスク非対応完了です!!
Info.plistページも参考にご覧ください。
InterfaceBuilderで生成したView (xib) をプログラムで初期化したい
InterfaceBuilderで画面を作成する場合は、InterfaceBuilder上でいろいろな設定等はできますが、それに加えてソースコード上でも合わせて初期化処理を書きたい場合があると思います。
そのような時にinitメソッドやinitWithFrameメソッドにコーディングしても呼ばれません。
そういう場合は、Viewに対応するFile's Ownerのクラスに「awakeFromNib」メソッドを作成して、
そこに初期化処理をコーディングすればOKです。
-(void)awakeFromNib{
// 何かの処理
}
NSArrayやNSDictionaryにnilをセットしたい
NSArrayやNSDictionaryなどの要素にセットできるオブジェクトはNSObjectのサブクラスだけなのでnilはそのままではセットできません。
そのような時は、nilのラッパークラスである「NSNullクラス」を使えばセットできます。
// NGパターン
NSMutableArray *arr = [NSMutableArray array];
[arr addObject: nil];
// OKパターン
NSMutableArray *arr = [NSMutableArray array];
[arr addObject: [NSNull null]];
Xcodeに行番号を表示したい
行番号を表示するには以下の手順で表示できます。
①上部メニューバーの「Xcode」→ 「Preferences...」を選択する。
②Preferencesウィンドウが表示されるので、「TextEditing」タブを選択
③Show: Line numbersにチェックを入れる(下図の赤枠のところ)
これで、行番号が表示されます。
(ちなみに、Xcode4です。)