【问题标题】:How can I force a UINavigationBar to have a smaller height?如何强制 UINavigationBar 具有较小的高度?
【发布时间】:2021-08-31 10:40:57
【问题描述】:

我想要一个没有标题且高度仅为 20 像素的 UINavigationBar。

这怎么可能?

我试过了,没有任何显示:

UINavigationBar *navigationBar = [[UINavigationBar alloc] init];

navigationBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 20.0);

[self.view addSubview:navigationBar];

然后我尝试了这个,高度固定为 Apple 使用的任何东西:

UINavigationBar *navigationBar = [[UINavigationBar alloc] init];

navigationBar.frame = CGRectMake(0, 0, self.view.frame.size.width, 20.0);

[self.view addSubview:navigationBar];

UINavigationItem* navigationItem = [[UINavigationItem alloc] initWithTitle:@""];

[navigationBar setItems:@[navigationItem]];

【问题讨论】:

  • 子类的时刻已经到来。在那里您可以更改应该更改它的intrinsicSize 方法,因为您不能从外部设置intrinsicSize,并且UINavigationBar 是一个通用的导航元素,必须具有一定的大小才能使用它。即使您不设置框架,它也应该有大小。但是您可以在 initWithFrame 的实现中设置一个私有成员变量,当要求intrinsSize 提供其大小时,该变量将返回正确的大小。
  • 如果您使用代码 sn-p 编写答案,我会接受。

标签: ios objective-c uiview uinavigationbar


【解决方案1】:

在 viewWillAppear 或 viewDidAppear 方法中添加这个

self.navigationController!.navigationBar.frame = CGRect(x: 0, y: 0, width: self.view.frame.size.width, height: 80.0) // set height whatever you required

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-02-14
    • 2016-04-17
    • 1970-01-01
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 2012-02-07
    • 1970-01-01
    相关资源
    最近更新 更多