Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2013年01月27日

UITabbarController使用時、画面回転を伴う操作時にUIViewのサイズが不正値になる件



PortraitまたはLandscapeモードという画面回転をサポートする動作する条件下においては、画面が回転されたときに、willAnimateRotationToInterfaceOrientationメソッドが呼ばれ、ここで記述された画面回転時の処理が行われる。

このとき、self.view(UIView)のサイズを参照すると、画面の向きに合わせた値になっているのが通常ではあるが、UITabbarControllerと併用したときに、ある条件下において、self.viewのサイズが不正値となることがある。

self.viewのサイズが不正値となる条件。

1. 画面をPortraitまたはLandscapeに向きを変えておく。
2. アプリを起動する。
3. 表示されている画面Aとは異なる画面Bを表示するTabをタッチして、画面Bを表示する。
4. 画面Bの向きを変える。
5. 画面Aを表示するTabをタッチして、画面Aをタッチする。

上記5.のとき、画面AのviewWillAppearで取得した本来のself.viewのサイズ値は、上記4.で向きを変えたPortraitまたはLandscapeの画面回転方向の値となるべきだが、上記3.のself.viewのサイズ値、すなわち画面回転前のサイズ値がセットされている。

このときの、self.interfaceOrientationの値は正しい画面回転の向きを示し、self.viewのサイズ値のみが不正値となっている。

Tabをタッチして画面Bを表示し、その後さらにTabをタッチして画面Aを表示したときは、seif.viewのサイズ値は現在の画面回転方向に一致する。

このため、例えばUIImageViewをself.viewに addSubviewしても、画面上の正しい位置に表示されず、サイズも本来の大きさとは異なってしまう現象が発生する。対症療法的には、contentModeやautoresizingMaskをUIImageViewに設定して微調整する必要がある。(但し、この措置をしても微妙に表示位置・サイズがずれる)


■検証端末:
iOS5.1 iPad2
iOS6.0 iPadシミュレータ

【UIViewの最新記事】
posted by mobileDeveloper at 01:11 | Comment(0) | TrackBack(0) | UIView はてなブックマーク - UITabbarController使用時、画面回転を伴う操作時にUIViewのサイズが不正値になる件 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。