ios - 是否可以定义相对于未知 UIViews 的自动布局约束?
问题描述
假设我有一个 UIView 或 UIViewController 我想在整个应用程序的许多地方使用。
虽然我不知道它最终将如何或在哪里显示,但我知道我总是希望它的宽度是其父项的一半,并固定在右侧。
如果我想在 HTML/CSS 中实现类似的效果,我会应用以下样式:
.floatRight{
position: relative;
width: 50%;
float: right;
}
<div class="floatRight"> foobar </div>
我试过使用 NSLayoutConstraints,但据我所知,我只能指定相对于其他视图的约束,这意味着我必须提前知道我的视图将放置在哪里。
iOS 中有什么方法可以让我在不提前知道父视图或周围视图的情况下指定“这个视图应该这么高并且总是尽可能远”?
解决方案
虽然我不知道它最终将如何或在哪里显示,但我知道我总是希望它的宽度是其父项的一半,并固定在右侧。
您必须等到视图有父视图,但这并不难。使用自定义 UIView 子类。在该子类中 override didMoveToSuperview
,并在您的 override 中创建并激活约束。当你这样做时,将视图的超级视图称为self.superview!
; 这就是您的代码需要知道的全部内容。
推荐阅读
- javascript - 改善可视化器外观
- java - 如何更改 JFrame 中 JPanel 的大小?
- php - 没有错误,但得到 404
- azure-ad-b2c - Azure B2c如何阻止用户登录直到管理员批准
- javascript - 错误:元素隐式具有“任何”类型,因为索引表达式不是“数字”类型
- javascript - 如何在重定向之前发出请求而不等待响应?
- model-view-controller - MVC 如何枚举第二个模型的数据
- google-cloud-platform - 如何在谷歌云中的自定义端口 8080 上允许出站流量
- node.js - TSLint 在 Jenkins 作业中缺少空格
- java - 使用 WebElement 列表时的陈旧元素,但与 Selenium 中的单个元素一起工作正常