1

我注意到在 iPhone 上使用 NavigationController 时,高度是 460。所以它包括除了状态栏之外的整个屏幕。

但是,当我在坐标 0 处添加某些内容时,它会显示在 NavigationBar 之后,尽管导航栏的大小包含在高度中(这意味着该视图的整个框架都脱离了屏幕)。

我犯错了吗?如果不是,为什么它是这样构造的?

NSLog(@"Frame: %@", [NSValue valueWithCGRect: self.view.frame]); // prints {(0, 20), (320, 460)}
UIScrollView* scrollView = [[UIScrollView alloc] initWithFrame: CGRectMake(0, self.navigationController.navigationBar.frame.size.height, self.view.frame.width, 50)];
[self.view addSubview: scrollView]; // showing up 44px *after* the nav bar
4

1 回答 1

0

我已经回答了你的其他类似问题,但这里有一个。

viewDidLoad您将看到视图高度为 460,因为此时它尚未调整大小以考虑导航栏。

但是如果你打印出相同的框架,viewWillAppear你会看到现在框​​架高度已经针对导航栏进行了调整。

因此,如果您想在 中添加一些东西viewDidLoad,您需要根据视图框架添加它,添加任何调整大小的蒙版将完成您想要的工作,并在视图出现后查看它是否正确调整。

于 2013-06-12T05:41:33.247 回答