UINavigationController barstyle属性更改布局

时间:2011-09-02 18:20:26

标签: ios uiviewcontroller uinavigationbar modalviewcontroller

我有一个显示导航控制器的模态视图控制器。导航控制器依次具有常规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];
}

有人可以帮我理解发生了什么吗?

1 个答案:

答案 0 :(得分:3)

当您使用UIBarStyleBlackTranslucent(实际上已弃用)属性时,Frame会移动,因为它假定您希望视图位于

下面

由于不推荐使用UIBarStyleBlackTranslucent,Apple Documentation表示要使用以下内容:

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

您可以尝试将视图移回正确的位置或尝试使用以下内容:

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