我有一个显示导航控制器的模态视图控制器。导航控制器依次具有常规UIViewController作为其根视图控制器。上面提到的UIViewController唯一的UI元素是UISwitch。
现在问题是:当我更改导航控制器的barStyle属性时,UIViewController内的UISwitch的布局会发生变化。这就是我所说的:
如果我没有设置barStyle属性,这就是我得到的:
http://img535.imageshack.us/img535/2281/plaini.png
UISwitch现在处于“受到重视”的位置。
现在,如果我设置了barStyle属性,
navController.navigationBar.barStyle = UIBarStyleBlackTranslucent;
请注意,UISwitch位于导航栏后面:
http://img853.imageshack.us/img853/2377/blackya.png
以下是UIViewController中UISwitch的代码:
- (void)viewDidLoad
{
UISwitch* mySwitch = [[UISwitch alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
[self.view addSubview:mySwitch];
[mySwitch release];
}
有人可以帮我理解发生了什么吗?
答案 0 :(得分:3)
当您使用UIBarStyleBlackTranslucent(实际上已弃用)属性时,Frame会移动,因为它假定您希望视图位于
下面由于不推荐使用UIBarStyleBlackTranslucent,Apple Documentation表示要使用以下内容:
navController.navigationBar.barStyle = UIBarStyleBlack;
navController.navigationBar.translucent = YES;
您可以尝试将视图移回正确的位置或尝试使用以下内容:
navController.navigationBar.tintColor = [UIColor blackColor];
navController.navigationBar.translucent = YES;