ですので、画面に何かを描画するには、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 件のコメント :
コメントを投稿