1

我正在尝试重新创建(在某种程度上)在 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 中的控件。该设置有效:

rightBarButtonItem 看起来很棒!

麻烦的是,它不会在轮换后保持这种状态。在横向使用 iPhone 时,它rightBarButtonItem​​会自动调整大小,看起来破碎并保持这种状态,即使将设备返回到纵向模式:

rightBarButtonItem 看起来不再那么棒了......

控件仍然按计划工作,但是……它看起来不再那么漂亮了。

我已经尝试了很多属性和不同的设置,除了没有为控件背景设置一个空的 UIImage 之外,似乎没有任何效果。如果我注释掉setBackgroundImage:setDividerImage:部分代码,即使在旋转后,控件也会保持其外观:

有效,但没有外观!

但这不是我一直在寻找的 UI。

你知道有什么方法可以达到预期的外观并且仍然有正确的行为吗?或者甚至是什么可能导致调整大小?

4

1 回答 1

0

您可以尝试使用两个 UIButton 来代替 UISegmentControl。

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