在iOS 10之前,UIToolbar
在其项目之间具有灵活的空格键按钮项目会自动缩小字体,以便所有文本都显示在屏幕上。下面的示例(iOS 10):
自XCode 9以来,在模拟器上运行iOS 11时,我的工具栏显示如下:
文字不仅缩小了字体大小,而且最后一个条形按钮项目(没有文字,只有图像)也消失了。
试图解决这个问题,我发现自iOS 11以来,UIToolbar
现在使用的是Autolayout而不是Frames。与此问题相关的一些帖子建议为项目创建约束,指定项目的宽度和/或高度。
然而,我想要实现的是适合工具栏中的所有内容,即使这意味着减少字体大小。我不认为我可以通过编程方式设置固定的宽度/高度。
此外,这是在故事板上使用IB构建的。 UIBarButton
类不允许我访问UILabel(对于文本项)或ImageView(对于带有图像的项)。我已经在运行时检查过customView
nil
。
我尝试通过代码创建项目,将customView
设置为UILabel
,adjustsFontSizeToFitWidth
设置为true
,但没有任何运气。我不知道iOS 11上灵活空格键项的目的是什么。
那么,如何模仿我以前的行为?适合所有项目并自动调整文本大小?
答案 0 :(得分:0)
您需要手动设置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];
}
}