Edo*_*ier 3 constraints ios autolayout swift
我正在开发一个项目,需要创建可自定义的共享卡(了解人们可以导出以便稍后在社交媒体上共享的图像)。
我将这些共享卡构建为普通 UIView,其中包含其他几个 UI 元素(主要是 UIImageView 和 UILabels)。
为了简单起见,我们将其称为SharingCardView。
由于该视觉效果将被导出和共享,因此我需要让它在所有设备上看起来完全相同。所以我的理解是,我需要让自动布局约束具有基于用户设备屏幕尺寸的响应常量。
想象一下,我在 iPhone 上显示 UIView,然后在 iPad 上显示,我希望保持ShareingCardView内部所有内容的纵横比,这样人们就看不到从 iPhone 或 iPad 导出的视觉效果之间的任何差异。
### 问题:
我希望能够将标签固定到SharingCardView 的顶部**,常数为10%**,如下面的屏幕截图所示。
### 到目前为止我尝试过这种方式
我尝试将常量设置为 self.bounds.width * 0.1 但当我创建视图边界时显然等于零,因此约束只是将所有内容固定在最顶部而没有任何填充。
nowUpOnYTLbl.anchor(top: topAnchor,
left: leftAnchor,
bottom: nil,
right: rightAnchor,
paddingTop: self.bounds.width * 0.1,
paddingLeft: 30,
paddingBottom: 0,
paddingRight: 30,
width: 0,
height: 20
)
Run Code Online (Sandbox Code Playgroud)
任何建议都会非常有帮助。如果您认为这种方法是完全错误的,那么我会倾听其他解决方案。
不要使用框架/边界来设置约束!仅使用约束关系来设置约束。所以在这里,您希望这个顶部约束是超级视图高度约束的 1/10。这样,比率将是实时的,在运行时取决于超级视图的实际高度。
但是,您不能这样做,因为您只能在一个高度约束和另一个高度约束之间形成此类比率。
因此,您必须使用不可见的间隔视图,其高度约束是父视图高度约束的 1/10(即高度约束相等,a 为multiplier)0.1。我可以轻松地在 Interface Builder 中实现这一点,无需任何代码。在我的屏幕截图中,看不见的间隔视图是可见的,这样您就可以看到窗帘后面的人......!
| 归档时间: |
|
| 查看次数: |
753 次 |
| 最近记录: |