如何在iOS 7中将UINavigationBar高度的高度从64更改为44?
问题描述:
在iOS 7中,UINavigationController
中的UINavigationBar
的高度已扩展到64点,因此它可能会低于状态栏。我如何将高度改为44点?如何在iOS 7中将UINavigationBar高度的高度从64更改为44?
下面是它看起来像现在:
答
换句话说:我怎样才能防止UINavigationBar
从下叠状态栏?
通过贾里德辛克莱在此blog post如前所述(见点#4):
的UINavigationController将改变其UINavigationBar的的要么44点或64点的高度,这取决于一个相当奇怪和无证组限制。如果UINavigationController检测到其视图框架的顶部与其UIWindow的顶部可视连续,则它将绘制其导航栏,其高度为64点。如果它的视图的顶部与UIWindow的顶部不连续(即使仅关闭一个点),那么它将以“传统”方式绘制其导航栏,高度为44点。即使在应用程序的视图控制器层次结构中存在多个子级,该逻辑也由UINavigationController执行。没有办法阻止这种行为。
使用自动布局,我能'的初始设置UINavigationController
的帧s UINavigationBar
的观点,使得它不与窗口的左上角排队拿到44分的高度上我UINavigationController
。下面是一些示例代码:
- (void)viewDidLoad {
UIViewController *viewController = [[UIViewController alloc] init];
viewController.view.backgroundColor = [UIColor whiteColor];
UINavigationController *navigationController = [[UINavigationController alloc] initWithRootViewController:viewController];
navigationController.view.frameHeight = [UIApplication sharedApplication].keyWindow.frameHeight - 20;
navigationController.view.frameY = 20;
[self addnavigationController:navigationController];
[self.view addSubview:navigationController.view];
[navigationController didMoveToParentViewController:self];
// Set the frame initially so that the top of the UINavigationController's view doesn't line up with the top of the UIWindow's view
navigationController.view.frame = (CGRect) {
.origin.x = navigationController.view.frame.origin.x,
.origin.y = 20,
.size.width = navigationController.view.frame.size.width,
.size.height = [UIApplication sharedApplication].keyWindow.frameHeight - 20
};
}
- (void)updateViewConstraints
{
// Set your actual constraints here
}
这里有什么结果如下(注意UINavigationBar
的高度如何为44分):
你可以设置y位置 –