【发布时间】:2015-04-21 07:42:56
【问题描述】:
我正在尝试(在某种程度上)重新创建 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: 的代码片段,即使在旋转之后,控件也会保持其外观:
但这不是我一直在寻找的 UI。
您是否知道任何方法可以实现预期外观并且仍然具有正确的行为?或者甚至是什么可能导致调整大小?
【问题讨论】:
标签: ios iphone uisegmentedcontrol uinavigationitem rightbarbuttonitem