gpt4 book ai didi

cocoa-touch - 添加一个 TabBarController 作为 View 的 subview

转载 作者:行者123 更新时间:2023-12-03 18:28:04 24 4
gpt4 key购买 nike

当我的应用程序启动时,我正在加载启动画面。然后我想加载一个 TabBarController 和它的 ViewControllers。但是,我的 TabBarController 窗口不会缩放到屏幕大小。

底部的 TabBar 可能有 3/4 被切断,状态栏下方的屏幕顶部有一个大约 20 像素的细长间隙。如何正确调整 TabBarController 的大小?

这是我的 SplashViewController 中加载初始 View 和 TabBarController 的代码:

 -(void)loadView{
// Init the view
CGRect appFrame = [[UIScreen mainScreen] applicationFrame];
UIView *view = [[UIView alloc] initWithFrame:appFrame];
view.autoresizingMask = UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.view = view;
[view release];

splashImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"Splash.png"]];
splashImageView.frame = CGRectMake(0,0,320,458);
[self.view addSubview:splashImageView];

viewController = [[FlashCardViewController alloc] initWithNibName:@"FlashCardViewController" bundle:[NSBundle mainBundle]];
//viewController.view.bounds = [[UIScreen mainScreen]bounds];
viewController.title = @"Quiz";
viewController.tabBarItem.image = [UIImage imageNamed:@"puzzle.png"];

UIViewController *viewController2 = [[UIViewController alloc] initWithNibName:nil bundle:nil];
viewController2.title = @"Nada";
viewController2.tabBarItem.image = [UIImage imageNamed:@"magnifying-glass.png"];
//viewController.view.alpha = 0.0;
//[self.view addSubview:viewController.view];

tabBarController = [[UITabBarController alloc] init];
tabBarController.viewControllers = [NSArray arrayWithObjects:viewController, viewController2, nil];
[viewController2 release];
tabBarController.view.alpha = 0.0;
//tabBarController.tabBarItem.image = [UIImage imageNamed:@"State_California.png"];
//tabBarController.tabBarItem.title = @"State_California.png";
tabBarController.view.bounds = [[self view] bounds];
//tabBarController.view.frame = [[UIScreen mainScreen] applicationFrame];
[self.view addSubview:tabBarController.view];

timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(fadeScreen) userInfo:nil repeats:NO];
}
-(void) fadeScreen
{
[UIView beginAnimations:nil context:nil]; // begin animation block
[UIView setAnimationDuration:0.75]; // sets animation duration
[UIView setAnimationDelegate:self]; // sets the delegate for this block
[UIView setAnimationDidStopSelector:@selector(finishedFading)]; // Calls finishFading
self.view.alpha = 0.0; // // Fades the alpha to 0 over animation
[UIView commitAnimations]; // Commits this block, done
}

-(void) finishedFading
{
[UIView beginAnimations:nil context:nil]; // Begin animation block
[UIView setAnimationDuration:0.75]; // set duration
self.view.alpha = 1.0; // fades the view to 1.0 alpha over .75 seconds
//viewController.view.alpha = 1.0;
tabBarController.view.alpha = 1.0;
[UIView commitAnimations];
[splashImageView removeFromSuperview];
}

最佳答案

我刚刚完成了几乎相同的工作并遇到了同样的问题,但最终我让它工作了。

  • 在 Xcode 中创建一个名为 Test1ViewController 的 View Controller 类并添加以下内容:
    @interface Test1ViewController : UIViewController {
    IBOutlet UITabBarController *tbc;
    }

    @property (nonatomic,retain) IBOutlet UITabBarController *tbc;
    @end
  • 创建一个名为 Test1View 的 View XIB
  • 添加 TabBarViewController到XIB
  • 将 XIB 中的文件所有者设置为 Test1ViewController .
  • 连接 tbc文件所有者中的 IBOutlet 到 XIB 中的标签栏 Controller 。
  • 连接 view File's Owner 中的IBOutlet 到XIB 中的 View 。
  • 在你的 SplashViewController.h 添加属性
    Test1ViewController *tabBarViewController;
  • 综合tabBarViewController在您的 SplashViewController.m .
  • 更换您的 TabBarController您的 loadView 中的创建代码SplashViewController 中的方法具有以下内容:
    tabBarViewController = [[Test1ViewController alloc] initWithNibName:
    @"Test1View" bundle:[NSBundle mainBundle]];
    tabBarViewController.view.alpha = 0.0;
    [self.view addSubview:[tabBarViewController view]];
  • 这是我缺少的一点。在 Test1ViewController.m ,您需要将以下行添加到 viewDidLoad方法:
    self.view = tbc.view;
  • 最后,我也不得不改变finishedFading SplashViewController.m 中的方法将 tabBarViewController 上的 alpha 设置为 1.0看法。
    -(void) finishedFading
    {
    [UIView beginAnimations:nil context:nil];
    [UIView setAnimationDuration:0.75];
    self.view.alpha = 1.0;
    tabBarViewController.view.alpha = 1.0;
    [UIView commitAnimations];
    [splashImageView removeFromSuperview];
    }

  • 我希望这有帮助。

    关于cocoa-touch - 添加一个 TabBarController 作为 View 的 subview ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1329560/

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