【问题标题】:How do i set the height of the UINavigationBar in an iphone app如何在 iphone 应用程序中设置 UINavigationBar 的高度
【发布时间】:2010-11-26 00:17:32
【问题描述】:

我使用 UINavigationController 的典型情况,我想让导航栏高一点。设置它的边界和框架似乎没有什么区别,我正在使用这个代码

    //set up the navigation
UINavigationController *navigationController = [UINavigationController new];

[navigationController.navigationBar setBarStyle:UIBarStyleBlack];
[navigationController.navigationBar setTintColor:[UIColor purpleColor]];
[navigationController.navigationBar setBounds:CGRectMake(0.0, 0.0, 480.0, 100.0)];
[navigationController.navigationBar setFrame:CGRectMake(0.0, 0.0, 480.0, 100.0)];

但无济于事。有任何想法吗?

【问题讨论】:

    标签: iphone uinavigationcontroller uinavigationbar bounds


    【解决方案1】:

    我认为您不能更改导航栏的高度。除非您添加提示消息...但这不是您想要的。

    框架是视图的可见区域。 Bounds 是内部区域。通常它的原点为 (0, 0) 并且与框架一样宽和高。但是,当内容超出可见区域时(如 UIScrollView),边界可能会更大(并且来源不同)。您很少看到小于其各自框架的边界。

    编辑:查看您的代码,[UINavigationController new] 是关于什么的?你应该做 [[UINavigationController alloc] init],不是吗?

    另外,你所做的并不是真正的子类化......

    【讨论】:

    • 你是对的,它不是子类化,在写问题时考虑其他事情。至于“新”,一定是从某处复制了代码
    • 新方法只是alloc/init的一种快捷方式。工作方式完全相同。
    【解决方案2】:

    2009 年的时候,UINavigationController 的高度大概没有办法改变。但是,在 iOS SDK 4.3 中,有一种方法(hack)。

    要更改 UINavigationController 的高度,请在 viewWillAppear:animated: 函数中更改其框架大小。然后,高度将在整个应用程序中保持自定义。

    【讨论】:

      【解决方案3】:

      据我所知,标准导航栏高度不应更改。

      "具体来说,可以 修改 barStyle、tintColor 和 translucent 属性,但您 绝不能直接更改 UIView 级别的属性,例如框架, bounds、alpha 或 hidden 属性。”

      如果你喜欢自定义导航栏的外观,可以使用 iOS 5 中的外观代理 [UINavigationBar 外观]

      【讨论】:

        猜你喜欢
        • 2011-01-09
        • 2013-04-27
        • 2018-01-24
        • 1970-01-01
        • 1970-01-01
        • 2019-12-20
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多