1

ナビゲーション バーに UISegmentedControl を 1 つ追加します。ビューが縦向きに読み込まれると、そのフレームは正しく見えます。ただし、横向きに回転すると、UIBarButtonItem が大きくなります。再度縦向きに回転しても、大きい方のままです。

いくつかのコード スニペットを次に示します。

#define SEGMENT_WIDTH   100.0
#define SEGMENT_HEIGHT  32.0

CGRect segmentedControlRect = CGRectMake(0, 0, SEGMENT_WIDTH, SEGMENT_HEIGHT);
segmentedControl = [[UISegmentedControl alloc] initWithFrame:segmentedControlRect];
segmentedControl.momentary = NO;
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBordered;
[segmentedControl addTarget:self action:@selector(tabButtonPressed:) forControlEvents:UIControlEventValueChanged];
UIBarButtonItem *segmentBarBtn = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];

self.navigationItem.rightBarButtonItem = segmentBarBtn;

一部のスクリーンショットは次のとおりです。

  1. ポートレートモードからロード。 ここに画像の説明を入力

  2. ランドスケープモードに回転します。 ここに画像の説明を入力

  3. ポートレートモードに戻ります。 ここに画像の説明を入力

任意の提案をいただければ幸いです。

4

1 に答える 1

1

ナビゲーション バーで枠付きスタイルを使用しないでください。を使用しUISegmentedControlStyleBarます。それがそのためです。

また、セグメント化されたコントロールのサイズ (フレーム) を設定しないでください。で作成しalloc-init、独自の組み込みのサイズ規則 ( sizeToFit) を使用できるようにするだけです。

于 2013-05-10T04:53:56.723 に答える