为什么Autolayout约束在运行时不会出现?

10

我试图创建一个自定义的UITableViewCell子类,该子类显示一张图片和一些标签在图片右侧。我将我的UIImageViewUILabels排列在堆栈视图中,并将最外层的堆栈视图固定在内容视图的四个边缘。

storyboard截图 约束截图

但是当我在模拟器中运行应用程序时,我看不到图像视图。通过调试视图层次结构,我发现它们被裁剪了。 视图层次结构截图

通过进一步关注带有“显示约束”的最外层堆栈视图,我根本看不到我的自动布局约束(而是对于每个最外层堆栈视图都得到一个模糊的位置运行时警告)。 关注堆栈视图的视图层次结构截图

右侧扩展的文本标签设置为0行,表格视图获取一个固定的estimatedRowHeight值,并将其rowHeight设置为UITableViewAutomaticDimension,因此我认为如果这些约束起作用,表中的行将按照内容大小调整大小。也许值得注意的是,我添加的任何宽度或高度自动布局约束在调试视图层次结构时都会出现,因此我知道某些约束在运行时存在,但我无法弄清楚为什么相对于内容视图的约束不起作用。


这些约束中是否有任何一个引用了您的 ContentView? - solenoid
我相信它们都是 - 我创建它们时确保使用ctrl +拖动到内容视图。 - John
此外,我应该指出它们都是“已安装”的约束条件,而不是“占位符”约束条件。 - John
你是否检查了特定类别大小的约束条件?如果你的目标是iPhone,它们应该设置为Compact和Regular宽度和高度。 - Sparga
你是异步下载图片吗?那就是你的问题了,我会很高兴得到这些点数。哈哈 - agibson007
3个回答

3

经过长时间的努力和有经验的开发人员审查我的项目,似乎设置方式没有问题。从头开始重新创建具有完全相同布局和约束条件的表视图单元格,并使用完全相同的代码解决了这个问题。在这个问题出现之前,我已经玩弄了堆栈视图和约束条件很多次,因此可能会出现Xcode不能正确设置约束条件的情况,当您在模拟器中运行应用程序时。


2

尝试解决在运行应用程序并查看此屏幕时打印到控制台日志中的所有警告。因为您不能总是忽略警告,许多警告必须通过纠正或解决约束中的问题来消除。这是最有效的解决方案。


0
我虽然晚了5年才来参加这个派对,但我在我的项目中找到了解决这个问题的方法。如果表视图单元格中包含的任何视图都有错误的子类设置,那么初始化程序会将它们默认为常规UIView,并且没有任何布局约束。希望这能为某人节省掉花费我数小时的时间!

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接