gpt4 book ai didi

iphone - 如何在我没有子类化的 UITabBarController 上隐藏 UITabBar?

转载 作者:可可西里 更新时间:2023-11-01 06:16:58 25 4
gpt4 key购买 nike

视觉上这就是我想要的

我有一个 UITabBarController .我想隐藏 UITabBar当用户进入中间标签时。中间选项卡加载 B 类的 View Controller 。这是流行的相机应用程序的行为 Instagram .他们的中间标签加载了一个全屏摄像头。

-------------    -------------    -------------
| VC | | VC | | VC |
| for | | for | | for |
| A | | B | | C |
| | | | | |
|------------ | | |------------
{ A } B | C | | | | A | B { C }
------------- ------------- -------------

所有其他相关 StackExchange 问题的建议解决方案

我们已经有很多关于在推送特定 View Controller 时如何隐藏 UITabBar 的问题。普遍的共识是:

b.hidesBottomBarWhenPushed = YES;
[self.navigationController pushViewController:b
animated:YES];

我的问题是,我从未将 UITabBarController 子类化。我在 Interface Builder 中创建了它。我从不手动推送我的 View Controller ,所以上面的解决方案对我不起作用。

失败尝试 1

在我的中间 View Controller 中,我在构造函数中打开 hidesBottomBarWhenPushed。这没有效果。

@implementation B

- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil {
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
self.hidesBottomBarWhenPushed = YES;
}
return self;
}

失败尝试2

我还尝试将我的应用委托(delegate)分配为 UITabBarControllerDelegate .当 UITabBarController 通知我选项卡已被点击时,我仅为中间 View Controller 打开 hidesBottomBarWhenPushed。这也无法隐藏 UITabBar

#pragma mark UIApplicationDelegate

- (void)applicationDidFinishLaunching:(UIApplication *)application
{
[window addSubview:self.rootViewController.view];
[window makeKeyAndVisible];
self.rootViewController.delegate = self;
}

#pragma mark UITabBarControllerDelegate

- (void) tabBarController:(UITabBarController *)tabBarController
didSelectViewController:(UIViewController *)viewController
{
if ([viewController isKindOfClass:[B class]]) {
viewController.hidesBottomBarWhenPushed = YES;
} else {
viewController.hidesBottomBarWhenPushed = NO;
}
}

最佳答案

- (void) hidetabbar:(BOOL)hiddenTabBar
{
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:0.5];
for(UIView *view in self.uiTabBarController.view.subviews){
if([view isKindOfClass:[UITabBar 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;
}

关于iphone - 如何在我没有子类化的 UITabBarController 上隐藏 UITabBar?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7576430/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com