【问题标题】:On iOS11, how to have UIToolbar to size all items to fit?在 iOS11 上,如何让 UIToolbar 调整所有项目的大小以适应?
【发布时间】:2018-04-06 22:22:34
【问题描述】:

直到 iOS 10,UIToolbar 在其项目之间具有灵活的空格键按钮项目会自动减小字体,以便所有文本都显示在屏幕上。下面的示例(iOS 10):

从 XCode 9 开始,在模拟器上运行 iOS 11 时,我的工具栏显示如下:

不仅文本的字体大小没有减小,而且最后一个条形按钮项(没有文本,只有图像)消失了。

为了解决这个问题,我发现从 iOS 11 开始,UIToolbar 现在使用自动布局而不是框架。一些与此问题相关的帖子建议为项目创建约束,为项目指定宽度和/或高度。

但是,我想要实现的是将所有内容都放在工具栏中,即使这意味着减小字体大小。我认为我不能以编程方式设置固定宽度/高度。

此外,这是在 Storyboard 上使用 IB 构建的。 UIBarButton 类不允许我访问 UILabel(用于文本项)或 ImageView(用于带有图像的项)。我已经检查过,customView 在运行时是nil

我尝试通过代码创建项目,将customView 设置为UILabel,将adjustsFontSizeToFitWidth 设置为true,但没有任何运气。我不知道 iOS 11 上灵活的空格键项目的用途是什么。

那么,如何模仿我之前的行为呢?适合所有项目并自动调整文本大小?

【问题讨论】:

  • 如果您觉得丢失了有价值的功能,请向 Apple 提交错误报告。
  • @matt 我可以,是的。我只是假设我做错了什么。
  • 每次重大更新都会丢失一些东西......

标签: ios autolayout uitoolbar ios-autolayout


【解决方案1】:

您将需要手动设置 UIBarButtonItems 的大小,例如:

NSUInteger smallFontSize = SMALL_FONT;  // e.g. font size of 12
self.smallFont = [UIFont boldSystemFontOfSize:smallFontSize];
self.smallFontAttributes = @{NSFontAttributeName: self.smallFont};

- (void)shrinkButtonFontSize:(NSArray *)barButtonItems {
 for (UIBarButtonItem* button in barButtonItems) {
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateNormal];
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateSelected];
    [button setTitleTextAttributes:self.smallFontAttributes forState:UIControlStateDisabled];
 }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-01-04
    • 2015-07-06
    • 1970-01-01
    • 2015-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多