OGeek|极客世界-中国程序员成长平台

标题: ios - 如何在 iOS 8 上修复横向导航栏项目的高度? [打印本页]

作者: 菜鸟教程小白    时间: 2022-12-12 11:55
标题: ios - 如何在 iOS 8 上修复横向导航栏项目的高度?

iOS 8 的一个功能似乎是在横向模式下隐藏状态栏。一 jar get the status bar back ,这很好,但我实际上并不反对它被隐藏,只是我的应用程序中的导航栏被截断了顶部的几个像素,正如你在这个模拟器屏幕截图中看到的那样:

iOS 8 landscape orientation cuts off navigation bar pixels

看到齿轮图标在屏幕顶部的位置了吗?它应该有更多的喘息空间。

如果我恢复状态栏会更好,但如果我可以让导航栏有更多空间,我不介意将其省略。研究 iOS 8 上的 Messages 应用程序,我发现导航栏的高度与我看到的相同,但撰写按钮变小了。如何更新我的应用以减小横向导航栏项目的大小?



Best Answer-推荐答案


原来我一直在 -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。现在它在风景中看起来不错,不会太拥挤:

Proper UIBarButtonItem font sizing on iOS 8

关于ios - 如何在 iOS 8 上修复横向导航栏项目的高度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26066498/






欢迎光临 OGeek|极客世界-中国程序员成长平台 (http://ogeek.cn/) Powered by Discuz! X3.4