如何增加UINavigationBar的高度?

6
简单的问题:如何增加导航栏的高度,以便额外的小部件适合其中,同时保持模糊效果?
例如日历应用程序在导航栏底部添加了工作日缩写...
...以及在邮件中将邮件移动到不同文件夹时:
请参考以下代码实现:
```css .navigation-bar { height: 64px; /*调整高度*/ -webkit-backdrop-filter: blur(20px); /*保持模糊*/ backdrop-filter: blur(20px); } ```
3个回答

5

根据iAnurag的帖子,答案是正确的,但仍存在一些UI问题(宽度不正确)


您可以通过添加类别来更改大小,如下所示

示例项目
下载

代码

#import "ViewController.h"
@implementation UINavigationBar (customNav)
- (CGSize)sizeThatFits:(CGSize)size {
    CGRect rec = self.frame;
    CGRect screenRect = [[UIScreen mainScreen] bounds];
    rec.size.width = screenRect.size.width;
    rec.size.height = 70;
    return rec.size;
}
@end

输出
在此输入图片描述
按下“按钮”时 在此输入图片描述


iAnurag 代码中的问题
在此输入图片描述


注意:我的代码已在iOS8设备上进行了测试。 - Jageen
2
兄弟,你下载的构建在Xcode 6上与iOS 8 iPhone 6模拟器一起运行良好。 - Ashish P.
从您提供的链接下载的项目按照我的回答正常工作。 - iAnurag
@AshishP,感谢您的确认,正在等待Mark确认他的环境。 - Jageen
提议的解决方案可行,但非常hackish。然而,你们俩都让我想到了创建一个UINavigationBar子类以及一个使用该类初始化导航栏的UINavigationController的想法。 - Mark Gaensicke
显示剩余2条评论

4

https://developer.apple.com/library/prerelease/content/samplecode/NavBar/Introduction/Intro.html

从 ReadMe.md 中:

扩展导航栏 #### 该示例演示了如何在导航栏下方放置一个自定义视图,使该视图看起来像是导航栏本身的一部分。这种技术可用于创建类似于 iOS 日历应用程序的界面。

我的不太谦虚的意见:不要覆盖 sizeThatFits(_:),也不要设置 nav 栏高度的约束。只需使用上述示例中的技巧即可。


1
正如您所指出的那样,示例代码实际上只是一个扩展导航栏的幻象。该栏的高度相同,只是去掉了阴影并在导航栏底部添加了另一个视图。他们还去掉了任何半透明效果。苹果的示例代码最多只能算是一种hack。 - Jason Moore

0
创建一个带有自定义sizeThatFits的UINavigationBar类别。
@implementation UINavigationBar (customNav)
- (CGSize)sizeThatFits:(CGSize)size  
{
  CGSize newSize = CGSizeMake(self.frame.size.width,70);
  return newSize;
}
@end

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接