gpt4 book ai didi

iphone - iPhone UINavigationController 出现问题(UINavigationBar 在错误的位置)

转载 作者:行者123 更新时间:2023-12-03 20:08:45 25 4
gpt4 key购买 nike

我正在对应用程序进行一些调整,包括更改为基于导航的界面。作为该更改的一部分,我编写了一个包含 UINavigationController 的 View Controller 。问题是,由于某种奇怪的原因,由 UINavigationController 管理的 UINavigationBarUIToolbar 与应有的位置向下移动了 20px。我设法生成了以下示例来演示该问题:

// MyAppDelegate.m

@implementation MyAppDelegate
@synthesize window = _window;

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions
{
self.window.frame = [[UIScreen mainScreen] applicationFrame];
[self.window makeKeyAndVisible];

TestController* tc = [TestController new];
[self.window addSubview:tc.view];

return YES;
}

@end

// TestController.m

@implementation TestController

- (void)loadView
{
self.view = [[UIView alloc] initWithFrame:CGRectZero];

UINavigationController* navController = [UINavigationController new];
navController.view.backgroundColor = [UIColor blueColor];
[navController setToolbarHidden:NO animated:NO];

[self.view addSubview:navController.view];
}

@end

这会在我的机器上产生以下结果:

Shot of example

如您所见,控件比我预期的位置低了 20 像素。我已经尝试了几乎所有我能想到的东西(wantsFullScreenLayoutautoresizesSubviews等的各种组合),但没有任何积极效果。这也与以编程方式弄乱状态栏无关(就像我遇到的大多数其他示例中的情况一样),因为我在任何时候都不会弄乱状态栏。无论导航 Controller 中有或没有 Root View Controller ,都会发生这种情况 - 如果有 Root View Controller ,它的内容也会向下移动 20px(因此它们实际上位于相对于导航栏和工具栏的正确位置)。

非常感谢任何帮助!

编辑:经过一番调查,似乎删除行 self.window.frame = [[UIScreen mainScreen] applicationFrame]; 似乎可以正确定位导航栏和工具栏以及内容。也就是说,现在应用程序中的一些其他 View 位于错误的位置(在状态栏下方)。我的理解是,通常建议使用线条来确保窗口的大小正确?

最佳答案

正如我在编辑中提到的,删除行 self.window.frame = [[UIScreen mainScreen] applicationFrame]; 似乎已经纠正了我 95% 的问题。我设法捏造了一种方法,通过对窗口使用相同的背景颜色和有问题的其余 View 来修复其他 5%,但我不能说我对这个解决方案感到兴奋 - 我不应该这样做这样做。

我会继续尝试,如果我找到更好的结果,我一定会在此处发布编辑。

关于iphone - iPhone UINavigationController 出现问题(UINavigationBar 在错误的位置),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6039391/

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