1

我将一个 UISegmentedControl 添加到导航栏。当视图以纵向加载时,它的框架看起来是正确的。但是当它旋转到横向时, UIBarButtonItem 会变大。如果再次旋转到纵向,它仍然是较大的。

一些代码片段在这里:

#define SEGMENT_WIDTH   100.0
#define SEGMENT_HEIGHT  32.0

CGRect segmentedControlRect = CGRectMake(0, 0, SEGMENT_WIDTH, SEGMENT_HEIGHT);
segmentedControl = [[UISegmentedControl alloc] initWithFrame:segmentedControlRect];
segmentedControl.momentary = NO;
segmentedControl.segmentedControlStyle = UISegmentedControlStyleBordered;
[segmentedControl addTarget:self action:@selector(tabButtonPressed:) forControlEvents:UIControlEventValueChanged];
UIBarButtonItem *segmentBarBtn = [[UIBarButtonItem alloc] initWithCustomView:segmentedControl];

self.navigationItem.rightBarButtonItem = segmentBarBtn;

部分截图如下:

  1. 从纵向模式加载。 在此处输入图像描述

  2. 旋转到横向模式。 在此处输入图像描述

  3. 旋转回纵向模式。 在此处输入图像描述

任何建议将不胜感激。

4

1 回答 1

1

不要在导航栏中使用边框样式!使用UISegmentedControlStyleBar. 这就是它的用途。

此外,不要设置分段控件的大小(框架)。只需创建它,alloc-init然后允许它使用自己的内在大小规则 ( sizeToFit)。

于 2013-05-10T04:53:56.723 回答