原文地址 http://blog.csdn.net/musou_ldns/article/details/8531422
本篇文章簡單介紹下如何隱藏 TabBar。畫面遷移的隱藏,方法很簡單,網(wǎng)上也有不少介紹。這里主要介紹的是在當(dāng)前頁面上隱藏 TabBar。下面是效果圖:
原理其實(shí)很簡單,就是修改 TabBar 的 subview 的 frame 就行了。其中,TabBar 的subview 共有兩個(gè),一個(gè)叫 UITabBar,就是底下的那個(gè) Bar;另一個(gè)叫UITranstionview,就是 Bar 上面的視圖。這兩個(gè) view 下面還有其他的subview,這就不用去管它了。
然后,把UITabBar的 y 向下移49個(gè)單位,把UITranstionview 的 hight 加長 49 個(gè)單位。理論上這樣就可以了,但是有時(shí)候這樣隱藏tabbar后,原來的viewcontroller上的view就會(huì)被拉長。解決方法是修改viewcontroller上的view 的 autosizing。具體效果試試就知道了。
以下是具體代碼,另加上了動(dòng)畫效果:
for (UIView *v in [self.tabBarController.view subviews]) {
if ([v isKindOfClass:[UITabBar class]]) {
[UIView animateWithDuration:kDuration delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){
CGRect frame = v.frame;
frame.origin.y += 49.0f;
v.frame = frame;
} completion:^(BOOL complete)
{
isAnimating = NO;
}];
} else {
isAnimating = YES;
[UIView animateWithDuration:kDuration delay:0.0f options:UIViewAnimationOptionCurveEaseOut animations:^(){
CGRect frame = v.frame;
frame.size.height += 49.0f;
v.frame = frame;
} completion:nil];
}
}