【问题标题】:How to make UINavigationBar taller like in Mail.app如何使 UINavigationBar 像 Mail.app 中一样高
【发布时间】:2018-04-13 15:08:09
【问题描述】:

线程视图中的 Apple Mail 应用程序有一个动态的、比通常更高的导航栏,当您滚动时它会折叠。是否可以仅使用允许的 API 调用来实现相同的效果,还是只能在 Apple 内部使用?

扩展:

折叠:

【问题讨论】:

  • 你设置prefersLargeTitles = YES了吗?

标签: ios objective-c uinavigationbar


【解决方案1】:

请查看here。该链接有不同的方法来解决问题。 但是下面的代码帮助了我。

for subview in (self.navigationController?.navigationBar.subviews)! {
   if NSStringFromClass(subview.classForCoder).contains("BarBackground") {
        var subViewFrame: CGRect = subview.frame
        // subViewFrame.origin.y = -20;
        subViewFrame.size.height = 100
        subview.frame = subViewFrame

    }

}

【讨论】:

    【解决方案2】:

    你可以设置如下

    -(void)layoutSubviews{
            [super layoutSubviews];
            CGRect rectStatus = [[UIApplication sharedApplication] statusBarFrame];
            if (rectStatus.size.height==44.f) {
    
            }else{
                if (@available(iOS 11.0, *)) {
                    for ( UIView*aView in self.subviews) {
                        if ([NSStringFromClass(aView.classForCoder) isEqualToString:@"_UINavigationBarContentView"]) {
                            aView.frame = CGRectMake( 0,20,aView.frame.size.width,44);
                        }
                        else if ([NSStringFromClass(aView.classForCoder) isEqualToString:@"_UIBarBackground"]) {
                            aView.frame = CGRectMake(0,0,aView.frame.size.width, 64);
                        }
                    }
                }
            }
        }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-09-24
      • 1970-01-01
      • 2011-01-09
      • 1970-01-01
      • 2015-11-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多