需要调整控件(UISlider)的大小以填充所有可用的UIToolbar空间(iOS)

时间:2011-11-26 11:15:13

标签: iphone ios ipad ios4 uitoolbar

我需要调整UISlider的大小来填充所有可用的UIToolbar空间,它必须在iOS 4.3和iOS 5.0下运行。 (好吧,我有一些适用于5.0的东西,但对于4.3来说它仍然是一个难题。)

有一个UIToolbar,其按钮是动态配置的,包括仅出现在横向方向的按钮。 (完整集在Interface Builder中指定,其中一些通过bar.items = filteredItems删除)在左侧和右侧的按钮之间有一个滑块(旁边有一个灵活的空间)。

我希望滑块填充两组按钮(左侧组和右侧组)之间的所有可用空间。

1 个答案:

答案 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];