我有一个xib,我在主视图中添加了一个UIView作为子视图。我希望这个子视图与主视图成比例高度。但是没有'Equals Height'选项可以做到这一点。如果它是故事板中的视图控制器,我本来可以做到这一点。
那么如何实现一个约束,其中子视图的高度是superview的高度比例(比如3:4)。
答案 0 :(得分:1)
您无法做到这一点似乎很奇怪。这是一种解决方法。
答案 1 :(得分:0)
我认为在这种情况下只能以编程方式完成。
- (void)viewDidLayoutSubviews {
self.scannedDetailsCardHeightConstraint.constant = self.view.frame.size.height*(0.4);
[self.view layoutSubviews];}
答案 2 :(得分:0)
实际上,您可以修改xib文件以实现此目的。
在subview.left和superview.left之间创建空间约束。保存xib并在Sublime(或其他编辑器)中打开它。代码就像
<constraint firstItem="Tnc-ek-Ibw" firstAttribute="leading" secondItem="iN0-l3-epB" secondAttribute="leading" id="1Go-h7-fVl"/>
Tnc-ek-Ibw
是您的子视图的标识符,iN0-l3-epB
是超级视图。(1Go-h7-fVl
是此约束的标识符,请忽略它。)
看起来很熟悉?是的,如果您在故事板中设置“等于高度”,那么故事板中的代码将非常相似。唯一的区别是 attribute
。现在将attribute
从leading
修改为width
。现在的代码将是这样的
<constraint firstItem="Tnc-ek-Ibw" firstAttribute="width" secondItem="iN0-l3-epB" secondAttribute="width" id="1Go-h7-fVl"/>
保存并在Xcode中重新打开它。它有效!
我不知道为什么不能在Xcode中做到这一点,也许这是一个bug,我不确定。
此技能无证。无论如何,它有效。