2012-04-12 73 views
0

我在不同的视图控制器中有几个UISegmentedControls。在iPad上,当设备改变方向时,我将这些段重新对齐,以便它们与下面的UITableViews对齐。我看到的问题是,虽然调整大小的面具是为UISegmentedControl设置的,并且没有任何我的代码,但它调整大小以填充正确的宽度,一旦我尝试更改内部分段的宽度,分段将不伸展一路走到最后,否则他们会变得太大而过去。在SplitView中的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]; 
} 

起初我以为这可能是由动画引起的,但即使加入了延迟,所以旋转动画已经完全结束在宽度没有影响。 splitview中的控件是否给出了错误的宽度或者什么?

回答

0

您可能会考虑的一个选项是重新创建控件或删除然后重新添加分段。

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

+0

UI实际上是从故事板加载的,因此以编程方式重新创建它看起来像是一个拙劣的解决方案。 – Echilon 2012-04-13 08:33:40