xib 中的自动布局 - 子视图的高度与导航栏和标签栏之间的空间成正比

Posted

技术标签:

【中文标题】xib 中的自动布局 - 子视图的高度与导航栏和标签栏之间的空间成正比【英文标题】:Auto Layout in xib - Subview's height proportional to space between navigation bar and tab bar 【发布时间】:2015-10-08 23:03:40 【问题描述】:

在 xib 中工作时,您将如何做到这一点。 (以编程方式添加约束很好,但在导航栏或状态栏的任何地方都没有硬编码值。)

有一个子视图,我希望其相对高度与顶部布局指南和底部布局指南之间的垂直空间成正比。

例如,在下图中 - 蓝色部分的高度需要与导航栏和底部标签栏(如果有)之间的垂直空间成比例。

PS - 再一次,它是一个 xib 而不是故事板。

【问题讨论】:

【参考方案1】:

对于其他偶然发现这个问题的人,我是这样做的。

- (void)viewDidLayoutSubviews   NSLayoutConstraint *heightConstraint = [NSLayoutConstraint constraintWithItem:self.subviewInQuestion
                                                                     attribute:NSLayoutAttributeHeight
                                                                     relatedBy:NSLayoutRelationEqual
                                                                        toItem:nil
                                                                     attribute:NSLayoutAttributeNotAnAttribute
                                                                    multiplier:1.0
                                                                      constant:0.5*(self.view.frame.size.height - [self.topLayoutGuide length] - [self.bottomLayoutGuide length])];
heightConstraint.identifier = @"ID_5";
[self.view addConstraint:heightConstraint];

[self.view setNeedsLayout]; 

【讨论】:

以上是关于xib 中的自动布局 - 子视图的高度与导航栏和标签栏之间的空间成正比的主要内容,如果未能解决你的问题,请参考以下文章

带有子视图的自动布局 NSCollectionView

代码中的自动布局约束与 XIB 中的大小冲突

使用自动布局调整子视图的大小

如何使自动布局与 XIB 中的自定义 UIView 一起使用?

启用自动布局的 iOS 调整视图大小

从 Xib 加载视图在自动布局后调整框架子视图的大小