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;