我需要调整UISlider的大小来填充所有可用的UIToolbar空间,它必须在iOS 4.3和iOS 5.0下运行。 (好吧,我有一些适用于5.0的东西,但对于4.3来说它仍然是一个难题。)
有一个UIToolbar,其按钮是动态配置的,包括仅出现在横向方向的按钮。 (完整集在Interface Builder中指定,其中一些通过bar.items = filteredItems
删除)在左侧和右侧的按钮之间有一个滑块(旁边有一个灵活的空间)。
我希望滑块填充两组按钮(左侧组和右侧组)之间的所有可用空间。
答案 0 :(得分:1)
这是我计算所有小节按钮项目宽度的方式。
主要想法是他们的订单并不重要,我们可以使用IBOutletCollection:
@property (nonatomic, strong) IBOutletCollection(UIButton) NSArray *allButtons;
以及在方向更改之前执行的代码:
const CGFloat leftOrRightMargin = 12; // measured on a screenshot
const CGFloat gapBetweenButtons = 10; // measured on a screenshot
const CGFloat experimentalCorrection = 6; // don't ask why
int totalNumberOfButtons = 0;
CGFloat totalWidthOfButtons = 0.0;
for (UIButton *b in allButtons) {
if (b.superview) { // if it's visible
totalNumberOfButtons++;
totalWidthOfButtons += b.bounds.size.width;
}
}
CGFloat occupiedSpace = experimentalCorrection
+ 2 * leftOrRightMargin
// gaps: totalNumberOfButtons-1+1, the last one is for the slider
+ totalNumberOfButtons * gapBetweenButtons
+ totalWidthOfButtons;
// now, resize the slider control
方向改变后:
[myBar setNeedsLayout];