我正试图找出一种干净的方法,使UIToolbar
的宽度尽可能宽,以适应它所包含的项目。有没有办法:
UIToolbar
以便在项目更改时自动调整其宽度?UIToolbar
的框架?由于项目之间的间距以及UIBarButtonItem
s不是UIView
子类的事实,我无法弄清楚这一点。
答案 0 :(得分:2)
除非我使用自定义视图,或者除非所有内容都已加载,否则尝试从其他无法解决的建议中获得一些建议后,我终于找到了根据项目设置工具栏宽度的方法:
//Add bar items to toolbar first.
UIView* v = toolbar.subviews.lastObject;
float newWidth = v.frame.origin.x + v.frame.size.width;
//Set toolbar width
您需要覆盖UIToolbar -setItems:
或以其他方式检测已更改的按钮以自动调整大小。
我已将此功能包含在我的重构库es_ios_utils中,以使用多个按钮设置导航项的正确项。在上面的链接中,请参阅UIToolbar +toolbarWithItems:
和UINavigationItem -setRightBarButtonItems
。
答案 1 :(得分:0)
我刚检查了文档并且看起来像UIBarButtonItems,即使它们不是UIView子类,它们也有一个属性width。我没有亲自尝试,但我认为你可以对每个项目的宽度求和,包括灵活项目,并获得工具栏的宽度。 希望能帮助到你! ;)
答案 2 :(得分:0)
我有一个带有图像的barButtonItem工具栏。我需要做的就是计算图像的总宽度加上间隔(边距。)
默认情况下,保证金宽度为11。代码将是:
let width: CGFloat = YourBarButtonItemList.reduce(0) {sofar, new in
if let image = new.image {
return sofar + image.size.width + 11
} else {
return sofar + ADefaultValueIfThisDoesntWork + 11
}
}