【问题标题】:Moving Tabbar off screen when View Loads (for certain views only)视图加载时将标签栏移出屏幕(仅适用于某些视图)
【发布时间】:2012-05-25 03:31:33
【问题描述】:
我现在花了 3 个小时在这上面,这真的让我很恼火。
我需要为某些视图隐藏标签栏并将其带回给其他视图。
我一直在努力
self.hidesBottomBarWhenPushed = TRUE;
没有成功。 (因为某些视图我必须在屏幕外 POP 并且仅适用于 PUSH,甚至它似乎无法正常工作)
所以我想知道是否可以以某种方式将标签栏的“框架”移动到屏幕视图的正下方,然后在需要时将其恢复,即使有动画也会很好?
【问题讨论】:
标签:
iphone
ios
ios5
xcode4.3
【解决方案1】:
答案可能更令人恼火。如果您正在谈论由 tabbarcontroller 拥有的 tabbar,则不能。通过一些技巧你可以移动它,但不幸的是视图没有正确调整大小。唯一的方法是使用 tabbar delegate ptotocol 创建自己的类似 tabbarcontroller。也许在 ios5 中他们改变了一些东西,但是当我在 ios4 中尝试时,我发现创建自己的标签栏控制器更快。
【解决方案2】:
使用此代码
- (void) hidetabbar {
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
for(UIView *view in appDelegate.objtabbar.view.subviews)
{
NSLog(@"%@", view);
if([view isKindOfClass:[UITabBar class]]||[view isKindOfClass:[UIButton class]]||[view isKindOfClass:[UIImageView class]])
{
if (hiddenTabBar) {
[view setFrame:CGRectMake(view.frame.origin.x, 431, view.frame.size.width, view.frame.size.height)];
} else {
[view setFrame:CGRectMake(view.frame.origin.x, 480, view.frame.size.width, view.frame.size.height)];
}
} else {
if (hiddenTabBar) {
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 431)];
} else {
[view setFrame:CGRectMake(view.frame.origin.x, view.frame.origin.y, view.frame.size.width, 480)];
}
}
}
[UIView commitAnimations];
hiddenTabBar = !hiddenTabBar;
}