【发布时间】: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