Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/93.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios Xcode 7.3中带有UILabels的UIStackView_Ios_Xcode_Autolayout_Uilabel_Uistackview - Fatal编程技术网

Ios Xcode 7.3中带有UILabels的UIStackView

Ios Xcode 7.3中带有UILabels的UIStackView,ios,xcode,autolayout,uilabel,uistackview,Ios,Xcode,Autolayout,Uilabel,Uistackview,因为我已经更新到了Xcode 7.3,所以我的UIStackView有问题。如果我创建了一个空项目,只在UIStackView中放置了两个UILabel并具有默认的拥抱和压缩优先级,则会显示自动布局错位错误。它甚至不适用于UIStackView中的一个(!)UILabel,因此优先级并不重要(我认为,可能存在问题) 我记得在Xcode 7.3之前的版本中,一切都很好。我分别检查了两台MacBook Pro,都是同一个版本 有人知道怎么修吗 忽略警告。故事板从未完全理解堆栈视图。这些约束在运行时

因为我已经更新到了Xcode 7.3,所以我的
UIStackView
有问题。如果我创建了一个空项目,只在
UIStackView
中放置了两个
UILabel
并具有默认的拥抱和压缩优先级,则会显示自动布局错位错误。它甚至不适用于
UIStackView
中的一个(!)
UILabel
,因此优先级并不重要(我认为,可能存在问题)

我记得在Xcode 7.3之前的版本中,一切都很好。我分别检查了两台MacBook Pro,都是同一个版本

有人知道怎么修吗


忽略警告。故事板从未完全理解堆栈视图。这些约束在运行时是正确的,这就是最重要的

这是一个出现在Xcode 7.3中的bug,所以你可以像他说的那样忽略它

问题

使用UIStackView时,情节提要无法计算子视图的固有内容大小

解决方案

如果您不喜欢在故事板中看到警告,可以按如下方式修复:

对于
UIStackView

  • 点击子视图的警告
  • 点击“更新帧”选项
  • 在中的第四个菜单中选择子视图固有大小的“占位符” 检查员视图
这样,您将不会看到警告,并且可以看到是否存在任何歧义

缺点是每次更改子视图时都应该执行此步骤(例如:更改UILabel的文本大小)


希望苹果能在下一个版本中修复这个漏洞,我有一个不同的技巧来消除警告并使“更新框架”正常工作

优势:

不需要每次文本更改时都更改占位符值

缺点:

当Xcode 8出现时不需要的额外视图

步骤:

  • 将每个UILabel嵌入到UIView中
  • 将UIView约束为基于标签调整自身大小(匹配前导、尾随、底部和顶部)
看起来UIStackView(在Xcode 7中)无法理解标签的内在内容大小,但可以理解视图的内在内容大小——因此,将标签放在视图中,然后进行预处理


是的,在运行时它可以工作,但在Interface Builder中也可以工作到7.3。苹果是否知道这个问题,他们是否计划解决这个问题(你有bug编号吗?-这样我也可以重复报告:)@matt我如何确保运行时的约束是好的?有没有一种方法可以在运行时检查模糊性?为什么这被否决了?我觉得它非常有用而且非常具体。嘿,哈姆扎。谢谢你的截图!它就像一个符咒!真棒的发现!嘿@RalfHundewadt,不客气,谢谢你的反馈:)即使在当前版本的Xcode 8(Beta 6)上,这有时也是必要的。臭虫档案。