gpt4 book ai didi

ios - 导航 Controller subview 中的导航栏初始化到错误的位置(即使它自行修复)

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:50:07 29 4
gpt4 key购买 nike

我正在使用自定义选项卡 View Controller (通过 UITabBarDelegate 实现)和其中的导航 Controller 作为 subview 。为了让导航 Controller 的导航栏显示在父选项卡 View Controller 的导航栏下方,我通过创建一个从屏幕顶部开始 44 像素的 CGRect 以编程方式初始化 NavigationController。

除一个小但非常明显的错误外,它工作得很漂亮。在我的父选项卡 View Controller 首次显示后的一瞬间,NavigationController 的导航栏从它应该在的位置下方约 30 像素处开始,在它跳回正确的 44 像素高度之前留下一些令人讨厌的空白(这正是位置父标签栏 Controller 的导航栏结束)。下面的前后截图说明了我在说什么。

The Bad Navigation Bar airs its dirty initialization laundry for all to see!

我应该将 NavigationController 的 subview 的初始化和/或 View 插入移到哪里,以隐藏最终用户对导航栏所做的这一点调整?

目前我有这样的方式,NavigationController 的初始化发生在 Tab Bar Controller 的 init 方法中,如下所示:

- (id)initWithCoder:(NSCoder *)aDecoder{
self = [super initWithCoder:aDecoder];
if (self) {
self.tab1vc =[[ContactsListViewController alloc] initWithNibName:@"ContactsViewController" bundle:nil];
self.nav1 = [[UINavigationController alloc] initWithRootViewController:self.tab1vc];
[nav1.view setFrame:CGRectMake(0, 44, 320, 370)];
}
}
return self;
}

然后我继续在主选项卡栏 Controller 的“ViewDidLoad”方法中插入 NavigationController 的实际 View ,如下所示:

- (void)viewDidLoad
{
[super viewDidLoad];
[self.view insertSubview:nav1.view belowSubview:mainTabBar];
[mainTabBar setSelectedItem:driverListTabBarItem];

}

最佳答案

     self.nav1 = [[UINavigationController alloc] initWithRootViewController:self.tab1vc];
[nav1.view setFrame:CGRectMake(0, 44, 320, 370)];

在你的“self.tab1vc”初始化方法中,你应该在那个 rootViewController 中设置 frame.origin

    self.view.frame = CGRectMake(0.0f,0.0f,320,460);

希望对您有所帮助。

关于ios - 导航 Controller subview 中的导航栏初始化到错误的位置(即使它自行修复),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11532830/

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