アプリ (iPhone および iPad) を横向きモードで起動しています。
iPad フレームのフレームは、 viewWidAppearのフレームよりもviewDidAppearで変化することがわかりました。
IOS IPAD 5.1 シミュレーター
viewWillAppear では、0.000000 20.000000 768.000000 1004.000000 です。
一方、viewDidAppear では 0.000000 0.000000 748.000000 1024.000000 です
IOS IPAD 6.0 シミュレーター[ただし、ios 6 iPad シミュレーターにはかなり驚きました]
viewWillAppear では、0.000000 0.000000 748.000000 1024.000000 です。
一方、viewDidAppear では、viewWillAppear と同じです。
では、 viewDidAppear でサブビューのフレームを設定できますか? ここで完璧なフレームを取得します。
iPhoneの場合、結果は20.000000 0.000000 300.000000 480.000000の両方の方法で同じです。
iPadとiPhoneで動作が異なるのはなぜですか?
Info.plist には、Landscape left と Right の「サポートされているインターフェイスの向き」があり、「初期インターフェイスの向き」は LandscapeLeft に設定されています。
AppLaunch メソッドは次のとおりです。
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window = [[[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]] autorelease];
self.viewController=[[ViewController alloc] init];
self.window.rootViewController = self.viewController;
}
ViewController.m には次のメソッドがあります。
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
if(UIInterfaceOrientationIsLandscape(interfaceOrientation)){
return YES;
}
return NO;
}