iOS 8上的一项功能似乎是在横向模式下隐藏状态栏。一个人可以get the status bar back,这很好,但实际上我并不反对它被隐藏,除了我的应用程序中的导航栏有几个像素切断,你可以在这个模拟器截图中看到:
查看齿轮图标是如何直接靠近屏幕顶部的?它应该有更多的喘息空间。
如果我恢复状态栏会更好,但是如果我可以让导航栏有更多的空间,我不介意把它留下来。研究iOS 8上的Messages应用程序,我看到导航栏高度与我看到的相同,但是撰写按钮变小了。如何更新我的应用以减少横向中导航栏项目的大小?
答案 0 :(得分:2)
事实证明我在U+2699
中设置了该设置按钮的字体大小(其标题只有-viewDidLoad
(⚙)):
UIBarButtonItem *settingsButton = self.navigationItem.leftBarButtonItem;
[settingsButton setTitleTextAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:28]}
forState:UIControlStateNormal
];
这就是为什么它在iOS 8的水平方向上太大了,尽管只是在纵向上。
要解决此问题,我从-viewDidLoad
删除了此代码,并添加了两种新方法来处理调整大小:
- (void)setSettingsButtonFontSize:(CGFloat)size {
UIBarButtonItem *settingsButton = self.navigationItem.leftBarButtonItem;
[settingsButton setTitleTextAttributes:@{NSFontAttributeName: [UIFont systemFontOfSize:size]}
forState:UIControlStateNormal
];
}
- (void)setSettingsButtonFontSizeForVerticalSizeClass:(UIUserInterfaceSizeClass)sizeClass {
[self setSettingsButtonFontSize:sizeClass == UIUserInterfaceSizeClassCompact ? 20 : 28];
}
第一种方法只设置指定的字体大小;第二个选择基于大小类参数的大小。
为了正确调整大小,我将此代码添加到-viewWillAppear:
:
if ([self respondsToSelector:@selector(traitCollection)]) {
[self setSettingsButtonFontSizeForVerticalSizeClass:self.traitCollection.verticalSizeClass];
} else {
[self setSettingsButtonFontSize:28];
}
所以我在iOS 7上获得了原始行为,但在iOS 8上,当垂直大小类紧凑时,图标大小为20。
最后,我添加了新的iOS-8方法来处理旋转:
- (void)willTransitionToTraitCollection:(UITraitCollection *)newCollection
withTransitionCoordinator:(id<UIViewControllerTransitionCoordinator>)coordinator
{
[super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator];
[self setSettingsButtonFontSizeForVerticalSizeClass:newCollection.verticalSizeClass];
}
所以现在,在iPhone上的iOS 8上,横向为20,纵向为28。现在它在风景中看起来很好,而不是太拥挤:
答案 1 :(得分:0)
您可能正在调整错误位置的帧。我建议用viewDidLayoutSubviews
方法设置所有帧(即齿轮的框架)。