iOS 自动布局 - xib 中的等高约束
iOS auto layouts - Equal Height constraint in an xib
我有一个 xib,我在其中添加了一个 UIView 作为主视图的子视图。我希望此子视图与主视图的高度成比例。但是没有 'Equals Height' 选项可以做到这一点。如果它是故事板中的视图控制器,我本可以做到这一点。
那么如何实现子视图高度与父视图高度成比例的约束(比如3:4)。
我认为在这种情况下只能以编程方式完成。
- (void)viewDidLayoutSubviews {
self.scannedDetailsCardHeightConstraint.constant = self.view.frame.size.height*(0.4);
[self.view layoutSubviews];}
你不能这样做似乎很奇怪。这是一个解决方法。
- 将视图添加到顶级视图。
- 将其顶部、左侧、右侧和底部固定到顶级视图的顶部、左侧、右侧和底部。使所有偏移量为 0.
- 现在您可以向其添加视图并使用等高和等宽约束。
实际上你可以修改 xib 文件来实现这个。
在 subview.left 和 superview.left 之间创建一个 space 约束。保存 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
是这个约束的标识符,忽略它。)
看着眼熟?是的,如果你在情节提要中设置 "Equals Height" ,那么情节提要中的代码将非常相似。唯一的区别是attribute
。现在将 attribute
从 leading
修改为 width
。现在的代码将是这样的
<constraint firstItem="Tnc-ek-Ibw" firstAttribute="width" secondItem="iN0-l3-epB" secondAttribute="width" id="1Go-h7-fVl"/>
保存并在 Xcode 中重新打开。有效!
我不知道为什么不能在 Xcode 中执行此操作,也许这是一个错误,我不确定。
此技能未记录。无论如何,它有效。
我有一个 xib,我在其中添加了一个 UIView 作为主视图的子视图。我希望此子视图与主视图的高度成比例。但是没有 'Equals Height' 选项可以做到这一点。如果它是故事板中的视图控制器,我本可以做到这一点。
那么如何实现子视图高度与父视图高度成比例的约束(比如3:4)。
我认为在这种情况下只能以编程方式完成。
- (void)viewDidLayoutSubviews {
self.scannedDetailsCardHeightConstraint.constant = self.view.frame.size.height*(0.4);
[self.view layoutSubviews];}
你不能这样做似乎很奇怪。这是一个解决方法。
- 将视图添加到顶级视图。
- 将其顶部、左侧、右侧和底部固定到顶级视图的顶部、左侧、右侧和底部。使所有偏移量为 0.
- 现在您可以向其添加视图并使用等高和等宽约束。
实际上你可以修改 xib 文件来实现这个。
在 subview.left 和 superview.left 之间创建一个 space 约束。保存 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
是这个约束的标识符,忽略它。)
看着眼熟?是的,如果你在情节提要中设置 "Equals Height" ,那么情节提要中的代码将非常相似。唯一的区别是attribute
。现在将 attribute
从 leading
修改为 width
。现在的代码将是这样的
<constraint firstItem="Tnc-ek-Ibw" firstAttribute="width" secondItem="iN0-l3-epB" secondAttribute="width" id="1Go-h7-fVl"/>
保存并在 Xcode 中重新打开。有效!
我不知道为什么不能在 Xcode 中执行此操作,也许这是一个错误,我不确定。
此技能未记录。无论如何,它有效。