UINavigationController barstyle меняет макет - PullRequest
1 голос
/ 02 сентября 2011

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

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

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

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

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

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

navController.navigationBar.barStyle = UIBarStyleBlackTranslucent;

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

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 Ответ

3 голосов
/ 03 сентября 2011

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

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

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

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

navController.navigationBar.tintColor = [UIColor blackColor];
navController.navigationBar.translucent = YES;
...