如何在 Xcode 中成功使用 AutoLayout 和 Constraints?
Posted
技术标签:
【中文标题】如何在 Xcode 中成功使用 AutoLayout 和 Constraints?【英文标题】:How do I successfully use AutoLayout and Constraints in Xcode? 【发布时间】:2014-08-20 06:42:10 【问题描述】:如果没有发布图片所需的代表,这将很困难......但是......
我目前在 Xcode 中有一个故事板布局。
我有一个 UIViewController,它分为两个部分,上层 UIView 和下层 UITableView(现在,我们可以忽略这一点,但同样的问题也适用于表格视图,我们也非常感谢您的建议)
在 UIView 中,我有一个 ProgressView,它跨越 UIView 的整个宽度,并与视图边缘的填充距离对齐。 ProgressView 设置为 50%,位于故事板设计器的布局中间。
模拟时,进度条似乎远高于 90%。问题是,当进度条缩小(或在情节提要布局编辑器中更改宽度)到“可见布局”的一半左右时,进度条占据了模拟屏幕的“大部分”,并正确显示了 50% 的进度。
我假设这与 AutoLayout 或 Size Classes 有关。我想正确地学习这个自动布局和约束的使用——因此,禁用其中任何一个都是不可接受的。建议的约束没有返回我的预期结果。
编辑:我想出了一些似乎可以令人满意的工作,请参阅给定的答案。但仍然渴望看到一些实际的布局建议。
编辑:将同样的原理应用到 UIViewController 下半部分的 UITableView 中,也修复了 Separator Insets 的问题。
【问题讨论】:
【参考方案1】:我找到了一种解决方案。
在故事板编辑器中,打开文档大纲。 按住右键选择ProgressView拖到Parent UIView,松开选择:
引领空间走向容器 到容器的尾随空间 在容器中水平居中(在这里完成仍然有问题,因为 UIView 仍然超出其父级的宽度......所以对 UIView 做同样的事情)
在文档大纲中,在UIView上按住鼠标右键拖动到Parent View,松开并选择: - 引领空间到集装箱 - 容器的尾随空间
现在,我有一个完全居中的 ProgressView,它位于两个边缘之间,两端都有“填充”。正是需要的。
这个问题似乎源于使用嵌套的 UIView。
【讨论】:
以上是关于如何在 Xcode 中成功使用 AutoLayout 和 Constraints?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Xcode8 中手动触发 NSManagedObject 子类的生成
UIImageView 高度不是自动布局约束后子图像高度的高度。