• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    迪恩网络公众号

ios - 如何在 iOS 8 上修复横向导航栏项目的高度?

[复制链接]
菜鸟教程小白 发表于 2022-12-12 11:55:57 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题

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/

回复

使用道具 举报

懒得打字嘛,点击右侧快捷回复 【右侧内容,后台自定义】
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注0

粉丝2

帖子830918

发布主题
阅读排行 更多
广告位

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap