ですので、画面に何かを描画するには、UIWindowの生成は必ず必要な作業でありiPhoneアプリケーションではUIWindowの上にUIView等のクラスを配置していくイメージになります。また、様々な描画や画面の回転をサポートさせるにはUIViewContorollerを利用します。(ここでは、UIViewControllerに関しては記述しません)
ステータスバーを含まないWindowの生成
UIWindowの生成は以下のように、CGRect構造体でiPhoneが持つウィンドウの領域を表す値を設定します。//CGRect構造体の作成 CGRect rect = [[UIScreen mainScreen] applicationFrame]; //UIWindowの生成 _window = [[UIWindow alloc] initWithFrame:rect];
ここで、
CGRect rect = [[UIScreen mainScreen] applicationFrame];
はiPhoneのステータスバー部分を含まない領域を返します。ステータスバーを常に表示しているアプリケーションの場合は
このような感じになるかと。
しかし、実行してみると分かりますが、このまま実行すると以下のようになります。
ステータスバーの20ピクセル分下にずれて表示されてしまっています。ステータスバーが表示されている場合はステータスバーの左下(x,y)=(0,20)が原点になるのが原因です。以下のように調整します。
//CGRect構造体の作成 CGRect rect = [[UIScreen mainScreen] applicationFrame]; //原点を調整rect.origin.y = 0; //UIWindowの生成 _window = [[UIWindow alloc] initWithFrame:rect];
ステータスバーを含むWindowの生成
ステータスバーを含む全画面分の領域を取得したい場合は、CGRect rect = [[UIScreen mainScreen] bounds];
となります。
実装イメージ
これらの処理はプロジェクト作成後に自動生成されるDelegateクラスのdidFinishLaunchingWithOptionsメソッドに記述します。
- (BOOL) application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions{
//CGRect構造体の作成
CGRect rect = [[UIScreen mainScreen] applicationFrame];
//原点を調整
rect.origin.y = 0;
//UIWindowの生成
_window = [[UIWindow alloc] initWithFrame:rect];
//UIViewの生成
myView = [[UIView alloc] initWithFrame:rect];
myView.backgroundColor = [UIColor whiteColor];
//Viewの追加
[_window addSubview:myView];
[self.window makeKeyAndVisible];
return YES;
}

0 件のコメント :
コメントを投稿