UINavigationController barstyle属性更改布局
我有一个模态视图控制器,显示导航控制器。 导航控制器依次具有常规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]; }
有人可以帮我理解发生了什么吗?
当您使用UIBarStyleBlackTranslucent(实际上已弃用)属性时,Frame会移动,因为它假定您希望视图位于下方
Apple文档说要使用以下内容,因为不推荐使用UIBarStyleBlackTranslucent:
navController.navigationBar.barStyle = UIBarStyleBlack; navController.navigationBar.translucent = YES;
您可以尝试将视图移回正确的位置或尝试使用以下内容:
navController.navigationBar.tintColor = [UIColor blackColor]; navController.navigationBar.translucent = YES;