月別: 2014年2月

iOS6.0以降の回転制御について

 

※本記事は、旧ブログからの再掲です。

UINavigationControllerとUITabBarControllerの両方を使用している場合の回転制御についてです。
※iOS6.0以降

iOS6.0からshouldAutorotateToInterfaceOrientation:メソッドがdeprecatedとなり、
新しく下記3つのメソッドが追加されました。
・shouldAutorotate
・supportedInterfaceOrientations
・preferredInterfaceOrientationForPresentation

画面回転を検出すると、まずshouldAutorotateメソッドが呼ばれ、
回転に対応する場合にはYES、しない場合にはNOを返却します。
shouldAutorotateでYESの場合に、supportedInterfaceOrientationsメソッドが呼ばれ、どの向きに対応するかを返却します。
preferredInterfaceOrientationForPresentationメソッドでは、複数の向きに対応している場合に初期表示画面の向きを指定します。 (さらに…)

Analyze実行時のDead storeメッセージ

 

※本記事は、旧ブログからの再掲です。

XcodeでAnalyzeを実行したら、下記の警告メッセージが出力されました。

“Value stored to ‘xxx’ during its initialization is never read”

調べたら、初期化した値が参照されていないことを指摘するメッセージのようです。

指摘されたのは以下のコードです。

NSMutableDictionary *dic = [NSMutableDictionary dictionary]; ←←この行で警告
dic = [_array objectAtIndex:index];

1行目で空のディクショナリを生成し変数dicに代入していますが、
2行目では別のオブジェクトを代入しています。
1行目で生成したディクショナリは以後使われません。
そのため、Analyze実行時に1行目の代入が無駄な処理として指摘されたようです。

対処としては、

NSMutableDictionary *dic = [_array objectAtIndex:index];

もしくは

NSMutableDictionary *dic; (or NSMutableDictionary *dic = nil;)
dic = [_array objectAtIndex:index];

とすることで、警告メッセージは出力されなくなりました。

 

複数ビューのタッチイベント受信処理

 

※本記事は、旧ブログからの再掲です。

複数のビューを重ねた場合のタッチイベント受信処理について、
ハマってしまったので備忘録です。

図のように一番下の階層から ScrollView→UIView→UIViewとビューを重ね
UIView A → シングルタップイベント
UIView B → スワイプイベント
を受信できるように設定したのですが
いざ実行してみたら、UIView B上でシングルタップしても何も反応しませんでした。

<期待する動作>
 UIView B上でシングルタップをした場合にも、UIView Aの受信処理が起動する。

view_touch_1

(さらに…)

各種サイズについて

 

※本記事は、旧ブログからの再掲です。

自分用のメモです。忘れるので。

・画面 (ステータスバー含む)
iPhone4Sまで  320 x 480 pt
iPhone5     320 x 568 pt
([[UIScreen mainScreen] bounds])

・画面(ステータスバー含まない)
iPhone4Sまで  320 x 460 pt
iPhone5     320 x 548 pt
([[UIScreen mainScreen] applicationFrame]

・ステータスバー
高さ : 20pt  ( [[UIApplication sharedApplication] statusBarFrame].size.height)

・ナビゲーションバー
高さ : 44pt (self.navigationController.navigationBar.bounds.size.height)

・タブバー
高さ : 49pt (self.tabBarController.tabBar.frame.size.height)

・キーボード(portrait)
高さ : 216pt

 

ピクセルとポイント
(Apple公式ドキュメント「iOSヒューマンインタフェイスガイドライン」より)

ピクセルとは、画像編集アプリケーションにおいて、デバイス画面のサイズや作成するアイコンのサイズを検討する場合に使用する測定単位です。ポイントとは、画面上の描画領域のサイズを検討する際に使用する測定単位です。
 標準解像度のデバイスの画面では、1ポイントが1ピクセルに対応しますが、それ以外の解像度では対応の割合が異なる場合があります。たとえば、Retinaディスプレイでは1ポイントは2ピクセルに相当します。

 

他バージョンのシミュレータを追加

 

※本記事は、旧ブログからの再掲です。

現在、Xcode4.6.2を使用中で、普段はiOS6.1のシミュレータでデバッグしているのですが、
他バージョンのシミュレータを使おうと思った時に選択肢にありませんでした。

ネットで調べたら、追加でインストールする必要があると分かったので早速インストールしました。

追加の方法は、
[Xcode]→[Preferences]→[Downloads]→[Componentsタブ]
で他バージョンのシミュレータが一覧で表示されるので、
追加したいバージョンのinstallボタンをクリックすればインストールされます。

another_simulator_1

(さらに…)