1

iOS 7 および iOS 8 の Mail.app に表示される上矢印と下矢印を (ある程度) 再作成しようとしています。UISegmentedControlこのように aを aに挿入するだけUIBarButtonItemです (その UI を複製するより良い方法を知っている場合は、お知らせください)。

UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] initWithItems:@[[UIImage imageNamed:@"ArrowDown"], [UIImage imageNamed:@"ArrowUp"]]];
[segmentedControl addTarget:self action:@selector(segmentedAction:) forControlEvents:UIControlEventValueChanged];
[segmentedControl setBackgroundImage:[[UIImage alloc] init] forState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[segmentedControl setDividerImage:[[UIImage alloc] init] forLeftSegmentState:UIControlStateNormal rightSegmentState:UIControlStateNormal barMetrics:UIBarMetricsDefault];
[segmentedControl setFrame:CGRectMake(0, 0, 100, 30)];
[segmentedControl setMomentary:YES];

UIBarButtonItem *segmentedButton = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];

self.navigationItem.rightBarButtonItem = segmentedButton;

setBackgroundImage:との呼び出しに注意してくださいsetDividerImage:。これらは、コントロールが Mail.app のものと同じように見えるようにするために必要です。そして、そのセットアップは機能します:

rightBarButtonItem 見栄えが良い!

問題は、ローテーションした後はそのままにならないことです。iPhone を横向きで使用すると、rightBarButtonItem自動的にサイズが変更され、壊れたように見え、デバイスを縦向きモードに戻した後もそのままになります。

rightBarButtonItem はもう見栄えがよくありません...

コントロールはまだ計画どおりに機能しますが、まあ...もうそれほどきれいには見えません。

多くのプロパティとさまざまなセットアップを試しましたが、コントロールの背景に空の UIImage を設定しないことを除いて、何も機能していないようです。コードの一部をコメント アウトするsetBackgroundImage:と、setDividerImage:回転後もコントロールの外観が維持されます。

機能しますが、見た目はありません。

しかし、それは私が探していた UI ではありません。

意図した外観を実現し、正しい動作を維持する方法を知っていますか? または、そもそもサイズ変更の原因は何でしょうか?

4

1 に答える 1

0

UISegmentControl の代わりに 2 つの UIButton を使用してみてください。

UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:customView];
self.navigationItem.rightBarButtonItem = rightItem;
于 2015-04-21T09:19:26.160 に答える