0

我在不同的视图控制器中有几个 UISegmentedControls。在 iPad 上,当设备改变方向时,我会重新对齐其中的段,以便它们与下面的 UITableViews 对齐。我看到的问题是,虽然为 UISegmentedControl 设置了调整大小掩码并且没有我的任何代码,但它会调整大小以填充正确的宽度,一旦我尝试更改其中的段的宽度,分段将不会拉伸一直到最后,否则它们会太大而超过。

这似乎只发生在控件处于拆分视图中时。

- (void)orientationChanged:(NSNotification *)notification {
    [self setHeaderWidths];
}

-(void)setHeaderWidths{
    int totalWidth = self.segSorter.bounds.size.width;
    int areaWidth = 100,
        priceWidth = 100;
    int padding = 35;
    [self.segSorter setWidth:totalWidth -padding- areaWidth-priceWidth forSegmentAtIndex:0];
    [self.segSorter setWidth:areaWidth forSegmentAtIndex:1];
    [self.segSorter setWidth:priceWidth forSegmentAtIndex:2];
}

最初我认为这可能是由动画引起的,但即使添加延迟以使旋转动画完全完成也不会影响宽度。拆分视图中的控件是否给出了错误的宽度或其他内容?

4

1 回答 1

0

您可能会考虑的一种选择是简单地重新创建控件或删除然后重新添加段。

在不知道控件内部发生了什么的情况下,当您更改宽度时,如果您正在调整的第一个(例如增加宽度)会导致宽度总和超出范围怎么办?在不知道该逻辑如何在内部工作的情况下,当我遇到类似这样的事情时,这些事情看起来像是在为简单的更改而战,更容易推出一种方法来根据需要重新创建控件(或删除并重新添加)元素)在指定的大小。

于 2012-04-12T19:18:36.010 回答