ios - 从日志输出中识别和修复自动布局问题
问题描述
我正在准备一个以多设备信息为重点的 iOS 应用程序,几乎完全在界面构建器故事板中。我正在使用带有文本或其他内容的表格视图控制器到静态表格视图单元格中。
在特定的单元格中,我想要一个具有相同高度行但宽度不同的文本字段网格 - 取决于文本字段的长度。
我正在使用包含水平堆栈视图的垂直堆栈视图,所有视图都带有对齐:填充和分布:按比例填充。
如果我不减小最小字体大小,网格在某些设备上根本不会出现,但是经过大量的摆弄,我可以让网格跨类大小出现在模拟器上......
但是,日志显示“无法同时满足约束......”
"<NSLayoutConstraint:0x600002bde620 UITextField:0x7f92608dc200.width == 45 (active)>",
"<NSLayoutConstraint:0x600002bfe210 'fittingSizeHTarget' UIStackView:0x7f925f463d70.width == 0 (active)>",
"<NSLayoutConstraint:0x600002bd2cb0 'UISV-canvas-connection' UIStackView:0x7f925f463d70.leading == UITextField:0x7f92608dc200.leading (active)>",
"<NSLayoutConstraint:0x600002bd2d00 'UISV-canvas-connection' H:[UITextField:0x7f926081b200]-(0)-| (active, names: '|':UIStackView:0x7f925f463d70 )>",
"<NSLayoutConstraint:0x600002bd4be0 'UISV-spacing' H:[UITextField:0x7f92608dc200]-(0)-[UITextField:0x7f926081b200] (active)>"
我从https://www.wtfautolayout.com了解到的意思是:
TextField1 的宽度应等于 45。
StackView 的宽度应该等于 0。
StackView 的前沿应该等于 TextField1 的前沿。‡</p>
StackView 的后沿应等于 TextField2 的后沿。‡</p>
TextField2 的前沿应该等于 TextField1 的后沿。‡</p>
后三个看起来很熟悉,但我没有安装并且找不到宽度限制(我猜是基于内容的)。
然后日志报告说打破上面列表中的第一个约束似乎是解决方案,但是另一个非常相似的日志错误随后出现了略有不同的值 - 可能是网格中的下一行。
我的问题在于准确确定发生这种情况的位置、发生原因以及如何有效地解决它。
解决方案
推荐阅读
- html - 如何将 JSON 数据获取到对话框组件中
- jupyter-notebook - 在 Watson Studio 中导入 Excel
- javascript - 动态检查/取消选中复选框
- google-bigquery - BigQuery 的 PARSE_DATE 函数可以处理 ISOWEEK 吗?
- python - 使用具有大量输出到 stdout 的子进程时,Python 代码挂起
- python - pdf2txt -python 中的等价物
- typescript - “文档”类型上不存在属性“字体”?
- c# - 在 Html.ValidationMessageFor 中过滤验证类型
- css - 更改优先级 css 样式表
- azure - 在 LogAnalytics 中从 Azure ActivityLog 跟踪资源删除