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何か関係あるのかなー