我正在尝试重新创建(在某种程度上)在 iOS 7 和 iOS 8 上的 Mail.app 上显示的向上和向下箭头。没有太多内容。我只是将 a 插入UISegmentedControl
到 aUIBarButtonItem
中,就像这样(如果您知道复制该 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。
你知道有什么方法可以达到预期的外观并且仍然有正确的行为吗?或者甚至是什么可能导致调整大小?