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

検討できるオプションの 1 つは、単純にコントロールを再作成するか、セグメントを削除してから再度追加することです。

コントロール内で何が起こっているのかを知らずに、幅を変更すると、最初のサイズ変更 (幅の増加など) によって幅の合計が境界を超えてしまう場合はどうなるでしょうか? そのロジックが内部でどのように機能しているかを知らなくても、このような単純な変更のための戦いのように見えるものに出くわしたときは、必要に応じてコントロールを再作成する (または削除して再追加する) メソッドをロールする方が簡単です。エレメント) を指定されたサイズにします。

于 2012-04-12T19:18:36.010 に答える