是否有可能(以编程方式,在运行时)查询导航栏和/或工具栏的高度/厚度将在后旋转?
也就是说,在为特定子视图构建框架时,我想相对于导航栏和工具栏之间的可用空间设置其框架。为了使其顺利进行,最好在shouldAutorotateToInterfaceOrientation:
而不是didRotateFromInterfaceOrientation:
中执行此操作,但self.navigationController.toolbar.frame.size.height
之类的值在方向和设备之间是不同的。
我想根据工具栏的厚度将来计算我的新子视图框架,并且我想在没有硬编码值的情况下进行计算,例如32pt,44pt等。
有什么想法吗?
答案 0 :(得分:1)
您可以在willAnimateRotationToInterfaceOrientation:duration:
方法中更改观看框架。
- (void)willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration {
[super willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration];
NSLog(@"%@", NSStringFromCGRect(self.navigationController.navigationBar.frame));
}
有关详细信息,请查看Apple提供的文档。
答案 1 :(得分:1)
您应该在willAnimateRotationToInterfaceOrientation:duration:
AFAIK在您到达didRotateFromInterfaceOrientation:
之前无法预测UIViews的大小
一种方法是在代码中调整所有框架大小,包括工具栏。这样您就可以完全控制UI元素的大小。