我正在尝试重新创建(在某种程度上)在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的控件。这个设置有效:
麻烦的是,它在旋转后不会保持这种状态。在风景中使用iPhone时,rightBarButtonItem
会自动调整大小,即使在将设备恢复为纵向模式后仍然保持不变并保持这种状态:
控制仍然按计划运行,但是......它看起来不那么漂亮了。
我已经尝试了很多属性和不同的设置,除了没有为控件背景设置一个空的UIImage之外似乎没什么用。如果我注释掉setBackgroundImage:
和setDividerImage:
段代码,控件即使在旋转后也会保持其外观:
但那不是我一直在寻找的用户界面。
你知道有什么方法可以实现预期的外观并且仍然有正确的行为吗?甚至可能导致首先调整大小的原因是什么?
答案 0 :(得分:0)
您可以尝试使用两个UIButton代替UISegmentedControl。
UIBarButtonItem *rightItem = [[UIBarButtonItem alloc] initWithCustomView:customView];
self.navigationItem.rightBarButtonItem = rightItem;