Tom*_*ift 14 uitoolbar uibarbuttonitem ios
我有一个UIBarButtonItem自UITextField定义视图.工具栏包含此项目和几个按钮.
当工具栏调整大小(比如设备方向更改)时,我希望UITextField增长或缩小(宽度)以占用工具栏中的所有可用空间.
如果没有弄清楚工具栏中所有按钮的组合大小,然后UITextField适当地设置宽度,是否只有一些神奇的方法可以让这个项目像灵活空间条项目一样?
正如我在评论中所写,@ Krishna_K建议的解决方案始终不起作用.
自从我写了自己的方法,想到分享.它的一部分基于: 获取UIBarButtonItem的宽度
// Expand the status label to fill remaining space
CGFloat totalItemsWidth = 0.0;
CGFloat itemsMargin = 8.0;
for (UIBarButtonItem *barButtonItem in myToolbar.items) {
if (barButtonItem != self.myLabelItem) {
// Get width of bar button item (hack from other SO question)
UIView *view = [barButtonItem valueForKey:@"view"];
CGFloat width = view? [view frame].size.width : (CGFloat)0.0;
totalItemsWidth += width + itemsMargin;
}
}
self.myLabelItem.width = (myToolbar.frame.size.width - totalItemsWidth) - itemsMargin;
Run Code Online (Sandbox Code Playgroud)
评论:
无法解释为什么这适用于灵活空间,但确实如此
请注意,传递给UIToolbar项目抄不保留 -所以你应该总是从工具栏本身,而不是你的地方留成对象的物品栏工作.
那个黑客攻击是唯一能够获得宽度的东西(尝试过宽度属性,经过一段时间的尝试后尝试添加视图,尝试让视图自行扩展).通常的黑客警告适用......
那就是人们......
如果您设置UIViewAutoresizingFlexibleWidth为文本字段,它应该自动缩小或增大。