UINavigationController barstyle меняет макет

У меня есть модальный контроллер вида, который отображает контроллер навигации. Контроллер навигации в свою очередь имеет обычный UIViewController в качестве корневого контроллера представления. Единственный элемент пользовательского интерфейса, который есть в вышеупомянутом UIViewController, - это UISwitch.

Теперь вот проблема: когда я изменяю свойство barStyle контроллера навигации, расположение UISwitch внутри UIViewController изменяется. Вот о чем я говорю:

Если я не установлю свойство barStyle, вот что я получу:

http://img535.imageshack.us/img535/2281/plaini.png

UISwitch теперь на своем "ожидаемом" месте.

Теперь, если я установлю свойство barStyle,

navController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

Обратите внимание, что UISwitch находится за панелью навигации:

http://img853.imageshack.us/img853/2377/blackya.png

Вот код для UISwitch в UIViewController:

- (void)viewDidLoad
{
    UISwitch* mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
    [self.view addSubview:mySwitch];
    [mySwitch release];
}

Может ли кто-нибудь помочь мне понять, что происходит?

1 ответ

Решение

Кадр смещается, когда вы используете свойство UIBarStyleBlackTranslucent (которое фактически устарело), ​​поскольку предполагается, что вы хотите, чтобы ваше представление находилось под ним

В документации Apple сказано использовать следующее, поскольку UIBarStyleBlackTranslucent устарела:

navController.navigationBar.barStyle = UIBarStyleBlack;
navController.navigationBar.translucent = YES;

Вы можете попытаться переместить ваш взгляд обратно в правильное место или использовать следующее:

navController.navigationBar.tintColor = [UIColor blackColor];
navController.navigationBar.translucent = YES;
Другие вопросы по тегам