iOS 8 的一个功能似乎是在横向模式下隐藏状态栏。一 jar get the status bar back ,这很好,但我实际上并不反对它被隐藏,只是我的应用程序中的导航栏被截断了顶部的几个像素,正如你在这个模拟器屏幕截图中看到的那样:
看到齿轮图标在屏幕顶部的位置了吗?它应该有更多的喘息空间。
如果我恢复状态栏会更好,但如果我可以让导航栏有更多空间,我不介意将其省略。研究 iOS 8 上的 Messages 应用程序,我发现导航栏的高度与我看到的相同,但撰写按钮变小了。如何更新我的应用以减小横向导航栏项目的大小?
Best Answer-推荐答案 strong>
原来我一直在 -viewDidLoad 中设置该设置按钮的字体大小(它的标题只有 U+2699 (⚙)):
UIBarButtonItem *settingsButton = self.navigationItem.leftBarButtonItem;
[settingsButton setTitleTextAttributes{NSFontAttributeName: [UIFont systemFontOfSize:28]}
forState:UIControlStateNormal
];
这就是为什么它在 iOS 8 上在水平方向上太大了,虽然在纵向上正好。
为了解决这个问题,我从 -viewDidLoad 中删除了这段代码,并添加了两个新方法来处理调整它的大小:
- (void)setSettingsButtonFontSizeCGFloat)size {
UIBarButtonItem *settingsButton = self.navigationItem.leftBarButtonItem;
[settingsButton setTitleTextAttributes{NSFontAttributeName: [UIFont systemFontOfSize:size]}
forState:UIControlStateNormal
];
}
- (void)setSettingsButtonFontSizeForVerticalSizeClassUIUserInterfaceSizeClass)sizeClass {
[self setSettingsButtonFontSize:sizeClass == UIUserInterfaceSizeClassCompact ? 20 : 28];
}
第一种方法只是设置指定的字体大小;第二个根据尺寸类参数选择尺寸。
为了使其大小合适,我将此代码添加到 -viewWillAppear: :
if ([self respondsToSelectorselector(traitCollection)]) {
[self setSettingsButtonFontSizeForVerticalSizeClass:self.traitCollection.verticalSizeClass];
} else {
[self setSettingsButtonFontSize:28];
}
所以我在 iOS 7 上得到了原始行为,但在 iOS 8 上,当垂直大小类紧凑时,图标的大小变为 20。
最后,我添加了 new-to-iOS-8 方法来处理旋转:
- (void)willTransitionToTraitCollectionUITraitCollection *)newCollection
withTransitionCoordinatorid<UIViewControllerTransitionCoordinator>)coordinator
{
[super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
[self setSettingsButtonFontSizeForVerticalSizeClass:newCollection.verticalSizeClass];
}
所以现在,在 iPhone 上的 iOS 8 上,横向齿轮为 20,纵向齿轮为 28。现在它在风景中看起来不错,不会太拥挤:
关于ios - 如何在 iOS 8 上修复横向导航栏项目的高度?,我们在Stack Overflow上找到一个类似的问题:
https://stackoverflow.com/questions/26066498/
|