iOS の UITransitionView について

TabBarを隠すようなアニメーションをつけて色々とやってるとUITransitionViewっていうビューについて知りたくなる時がある。

以下のURLの方も書いていますが、TabBarだけ移動させるようなアニメーションだけを記述すると黒か白か、なぞの領域が表示されてしまいます。

http://nyan-poppo.hatenablog.com/entry/2012/07/31/235431

else内で処理している部分はいうならばUITransitionViewにあてがう部分なので、以下のように書いてもたぶん大丈夫。で、iphone5が発売になって431や480などのハードコーディングはイケてない仕様になってしまったので、windowSizeから数値を計算してあげるとよさそう。

[objc]

CGRect windowSize = [[UIScreen mainScreen] bounds];

NSString *class_string = NSStringFromClass([view class]);

if([class_string isEqualToString:@"UITransitionView"]){

if (!isHide) {

_rect.size.height = windowSize.size.height - 49;

} else {

_rect.size.height = windowSize.size.height;

}

[view setFrame:_rect];

}

[/objc]

49はタブバーの高さ。僕の場合は49ってだけなので必要に応じて変えるとよいと思います。

僕のメモ的解釈だけ書いておくと、UITransitionViewはタブバーより上の表示(描画)部分。UITransitionViewをウィンドウサイズいっぱいいっぱいにするとタブバーを移動させた(非表示にした)ときにフルサイズで画面に表示され、タブバーを戻す(表示させる)時はタブバー部分を差し引いた数値に変更してあげる。

タブバーを戻す(表示させる)ときに背景がちらつく場合は、tabBarのsuperviewの背景を指定するといいかもしれません。この tabBar.superviewのclassはUIWindow。

[objc]

//色指定

self.tabBar.superview.backgroundColor = [UIColor orangeColor];

//画像指定

self.tabBar.superview.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"bg.png"]]

[/objc]

UIColorには画像も指定できちゃってよくわかりませんが、便利です。

UIWindowとUITransitionView何か関係あるのかなー