UISegmentedControl,rightBarButtonItem和rotation问题

时间:2015-04-21 07:42:56

标签: ios iphone uisegmentedcontrol uinavigationitem rightbarbuttonitem

我正在尝试重新创建(在某种程度上)在iOS 7和iOS 8上的Mail.app上显示的向上和向下箭头。它没有多少。我只是将UISegmentedControl插入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 looking great!

麻烦的是,它在旋转后不会保持这种状态。在风景中使用iPhone时,rightBarButtonItem会自动调整大小,即使在将设备恢复为纵向模式后仍然保持不变并保持这种状态:

rightBarButtonItem not looking so great anymore...

控制仍然按计划运行,但是......它看起来不那么漂亮了。

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

Works, but without the looks!

但那不是我一直在寻找的用户界面。

你知道有什么方法可以实现预期的外观并且仍然有正确的行为吗?甚至可能导致首先调整大小的原因是什么?

1 个答案:

答案 0 :(得分:0)

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

UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:customView];
self.navigationItem.rightBarButtonItem = rightItem;