【问题标题】:UINavigationController barstyle property changes layoutUINavigationController barstyle 属性改变布局
【发布时间】:2011-09-02 18:20:25
【问题描述】:

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

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

【问题讨论】:

    标签: ios uiviewcontroller uinavigationbar modalviewcontroller


    【解决方案1】:

    当您使用 UIBarStyleBlackTranslucent(实际上已弃用)属性时,框架会发生变化,因为它假定您希望视图位于下方

    Apple Documentation 表示要使用以下内容,因为 UIBarStyleBlackTranslucent 已弃用:

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

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

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

    【讨论】:

    • 我不认为 barStyle 会对视图的外观产生如此大的影响。非常感谢!!令人惊讶的是 Xcode 没有将 UIBarStyleBlackTranslucent 显示为已弃用的选项!
    • 此外,尽管使用了您提供的上述两行代码,我还是不得不将我的 UI 元素向下移动。看起来“.translucent”属性决定了它后面的框架是否需要移动,因为当我将属性设置为NO时,我不必再移动了。
    • 不确定您是如何布置代码的,但您不能将添加按钮的视图向下移动 44 像素吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-08
    • 2018-11-24
    • 2013-06-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多