如何在从纵向旋转到横向时更改UIBarButtonItem大小?

时间:2013-05-10 04:45:47

标签: iphone ios uiview uinavigationcontroller uibarbuttonitem

我在导航栏中添加了一个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. enter image description here

  2. 旋转到横向模式。 enter image description here

  3. 旋转回纵向模式。 enter image description here

  4. 任何建议都将受到赞赏。

1 个答案:

答案 0 :(得分:1)

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

另外,请勿设置分段控件的大小(帧)。只需使用alloc-init创建它,然后允许它使用自己的内在大小规则(sizeToFit)。