2012-04-12 16 views
0

私はいくつかのUISegmentedControlを異なるView Controllerに持っています。 iPadでは、デバイスの向きが変わったときに、これらのセグメントを再配置して、その下のUITableViewと整列させます。私が見ている問題は、サイズ変更マスクが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