以编程方式添加时,UISegmentedControl不以UINavigationController为中心

时间:2011-01-17 19:16:38

标签: iphone uinavigationcontroller uisegmentedcontrol

我在根视图控制器类实现中使用以下代码:

- (void)viewDidLoad 
{
    [super viewDidLoad];

    NSArray *segmentTextContent = [NSArray arrayWithObjects:
                                   NSLocalizedString(@"button1", @""),
                                   NSLocalizedString(@"button2", @""),
                                   NSLocalizedString(@"button3", @""), nil];

    UISegmentedControl *segmentedControl = [[UISegmentedControl alloc] nitWithItems:segmentTextContent];
    segmentedControl.selectedSegmentIndex = 0;
    segmentedControl.autoresizingMask = UIViewAutoresizingFlexibleWidth;
    segmentedControl.segmentedControlStyle = UISegmentedControlStyleBar;
    segmentedControl.frame = CGRectMake(0, 0, 400, 30);

    self.navigationItem.titleView = segmentedControl;
    [segmentedControl release];
}

分段控件未正确居中,它向右移动了几个像素。有趣的是,它也没有正确对齐。就好像有一些左边的填充物阻止它居中。另一个有趣的事情是,如果我在界面构建器中绘制这个分段控件,它会完美地居中,所以这只是一个程序问题。

我已经在一个全新的空应用程序中尝试了这个代码,并获得了相同的结果,所以我知道我的应用程序中没有其他东西导致它。

抱歉,我想发布一个屏幕截图,但我没有足够的声望点; - )

任何想法?

1 个答案:

答案 0 :(得分:0)

没有左按钮,我甚至尝试过:

self.navigationItem.leftBarButtonItem = nil;
self.navigationItem.backBarButtonItem = nil;

正如我所说,它适用于IB,而不是代码。它也在一个全新的项目中失败 - 你可以亲自尝试一下,看看......

我好像找到了解决办法。为宽度指定的400导致了问题。我指定了300,现在它正确居中。我理想情况下应该抓住一些全局屏幕宽度值而不是硬编码300。