iOS 11自定义标题视图大小;自动布局似乎被忽略了

iOS 11自定义标题视图大小;自动布局似乎被忽略了,ios,uikit,ios11,Ios,Uikit,Ios11,我有一个uinavigationbar作为导航控制器的一部分,我需要70像素高。iOS11之前有多种解决方案,我实现了一种 在iOS 11测试版期间,我尝试了各种使用自动布局调整标题视图大小的方法。根据WWDC谈话,它应该识别标题视图中的宽度+高度约束,并适应它们。它似乎没有这样做 看起来它与内置的UILayoutGuide冲突 ( "<NSLayoutConstraint:0x60000008c760 UILayoutGuide:0x6000001acbe0'TitleView(

我有一个uinavigationbar作为导航控制器的一部分,我需要70像素高。iOS11之前有多种解决方案,我实现了一种

在iOS 11测试版期间,我尝试了各种使用自动布局调整标题视图大小的方法。根据WWDC谈话,它应该识别标题视图中的宽度+高度约束,并适应它们。它似乎没有这样做

看起来它与内置的UILayoutGuide冲突

(
    "<NSLayoutConstraint:0x60000008c760 UILayoutGuide:0x6000001acbe0'TitleView(0x7fe600c0a710)'.height == 44   (active)>",
    "<NSLayoutConstraint:0x61400008c6c0 EasyRelease.CustomTitleView:0x7fe606008e70.top >= UILayoutGuide:0x6000001acbe0'TitleView(0x7fe600c0a710)'.top   (active)>",
    "<NSLayoutConstraint:0x61400008c800 EasyRelease.CustomTitleView:0x7fe606008e70.centerY == UILayoutGuide:0x6000001acbe0'TitleView(0x7fe600c0a710)'.centerY   (active)>",
    "<NSLayoutConstraint:0x61400008bbd0 EasyRelease.CustomTitleView:0x7fe606008e70.height == 70   (active)>"
)
(
"",
“=UILayoutGuide:0x6000001acbe0'标题视图(0x7fe600c0a710)'。顶部(活动)>”,
"",
""
)
有什么好处?这项功能在iOS11中没有正确实现,还是我遗漏了什么?是否有任何已知的变通方法可用于调整titleview+uinavigationbar高度


编辑:我的代码的工作方式是在标题视图中添加了宽度+高度约束。还有什么我该做的吗?从WWDC的演示来看,这已经足够了

看看下面的答案:


我也遇到了类似的问题,覆盖“intrinsicContentSize”会让我找到解决方案。

这可能会起作用,它会在导航栏上方放置一个视图。 您应该注意,您的图像高度应为70像素。 13是70像素图像的神奇数字,因为它显示在导航栏的中心

-(void)updateNavBarBackground{
    [[self.navigationController.navigationBar viewWithTag:1] removeFromSuperview];
    UIImage * image = [ UIImage imageNamed:@"NavBarImage"];
    UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
    imageView.center = CGPointMake(self.navigationController.navigationBar.frame.size.width  / 2,
                               self.navigationController.navigationBar.frame.size.height / 2 - 13);

    imageView.tag = 1;
    [self.navigationController.navigationBar addSubview : imageView];
}  

如果您需要帮助,您需要详细说明当前代码的工作方式。然而,所有的bug(尤其是beta版软件)都应该报告给苹果:我遇到了完全相同的问题。你弄明白了吗?不,我相信这是iOS的一个漏洞。我向苹果公司提交了一份bug报告和示例项目,他们向我表示感谢,此后我再也没有回音。我的解决方案是不依赖uinavigationcontroller的导航栏,而是在每个viewcontroller中实例化我自己的导航栏,手动设置其框架。如果有帮助,请记住向上投票“gngrwzrd”问题/答案。