UISegmentedControl не центрируется на UINavigationController при программном добавлении - PullRequest
2 голосов
/ 17 января 2011

Я использую следующий код в моей реализации класса контроллера корневого представления:

- (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 голосов
/ 17 января 2011

Левой кнопки нет, я даже пытался сделать:

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

Как я уже сказал, она работает в IB, а не в коде.И это также терпит неудачу в совершенно новом проекте - вы можете попробовать это сами и посмотреть ...

Я, кажется, нашел исправление.400, указанный для ширины, вызывал проблему.Я указал 300, и теперь он центрирован правильно.Я предположил, что в идеале мне нужно получить какое-то глобальное значение ширины экрана вместо жесткого кодирования 300.

...