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 のものと同じように見えるようにするために必要です。そして、そのセットアップは機能します:
問題は、ローテーションした後はそのままにならないことです。iPhone を横向きで使用すると、rightBarButtonItem
自動的にサイズが変更され、壊れたように見え、デバイスを縦向きモードに戻した後もそのままになります。
コントロールはまだ計画どおりに機能しますが、まあ...もうそれほどきれいには見えません。
多くのプロパティとさまざまなセットアップを試しましたが、コントロールの背景に空の UIImage を設定しないことを除いて、何も機能していないようです。コードの一部をコメント アウトするsetBackgroundImage:
と、setDividerImage:
回転後もコントロールの外観が維持されます。
しかし、それは私が探していた UI ではありません。
意図した外観を実現し、正しい動作を維持する方法を知っていますか? または、そもそもサイズ変更の原因は何でしょうか?