【问题标题】:Autolayout constraints and iPhone 6/6 plus [closed]自动布局约束和 iPhone 6/6 plus [关闭]
【发布时间】:2014-11-22 01:21:00
【问题描述】:

我是 iOS 开发新手,遇到了 AutoLayout 约束问题。我正在尝试将标签“固定”到 TableViewCell 的右侧。它在 iPhone 4s-5s 模拟器中运行良好,但在 iPhone 6 (plus) 模拟器中无法正常运行。

标签上的约束是顶部空间到容器边距,前导空间到容器边距,如下所示:

在 4s/5/5s 模拟器中,它看起来像我期望的那样,但在 6 plus 模拟器中,我得到了这个:

6 也存在同样的问题,但程度较轻。

如果我将前导空间换成边距,将尾随空间换成边距,标签会脱落,在每个模拟器中留下一个空白单元格。

但是,如果我将完全相同的布局约束添加到普通视图,标签会很好地对齐。这只发生在自定义 TableViewCell 中。

宽度和高度都设置为尺寸类中的任意值。如果我扩大单元格的宽度,将标签向右移动,然后将单元格缩小,使标签偏离侧面,然后调整约束,标签至少会在 6+ 上更接近右侧.这样做的问题是,在任何较小的东西上,它都会从侧面掉下来。

如何让标签在 TableViewCell 中的所有设备中向右对齐,或者这只是模拟器中的问题?我没有 6+ 来测试它。

【问题讨论】:

  • 如果您试图将其固定在 right 侧,为什么要将其限制在 left
  • 如果我像this一样把它固定在左边,它会从屏幕上掉下来,我得到this

标签: ios iphone uitableview interface-builder iphone-6-plus


【解决方案1】:

在您的情况下,要将对象固定到视图的右侧,您需要的唯一约束是

  • 到容器的顶部空间
  • 到容器的尾随空间
  • 固定宽度
  • 固定高度

如果标签的宽度是可变的,您可能希望:

  • 右对齐标签
  • 删除固定宽度约束并将前导空间添加到容器

如果在您的示例中将前导空格更改为尾随空格约束后,您看到标签消失了,我会确保您的父表视图约束是正确的,并且表视图没有溢出屏幕边缘。

【讨论】:

  • 谢谢,但是例如我有一个视图宽度是 self.contentView.frame.size.width-20 for 6 plus 我可以这样做:[self.contentView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@ “H:|-10-[_bgView(400)]-10-|”但它会大于 iPhone 5 和 6 的帧宽度,如何在约束 bgView(400) 中获取动态值来代替“400”。谢谢
【解决方案2】:

如果我将前导空格换成边缘空格,标签会脱落,在每个模拟器中留下一个空白单元格

并非如此。删除前导空间约束。从标签的右边缘到contentView 的右边缘进行尾随空间约束——不是到它的边距,而是视图本身。这就是你所需要的。

【讨论】:

  • 我之前做过that,结果我得到了this
  • 那你做错了。需要我帮你修吗?发到github上,我会的。
  • 顺便说一句,我认为荧光可能是正确的;听起来/看起来这里的问题仅仅是整个桌子正在向右消失。如果您按照我的描述进行操作,标签 出现在表格的右侧,所以如果您没有看到它,那一定是因为您没有看到表格的右侧。确保表格视图本身在所有四个侧面都固定到其父视图。
  • @floresce 这就是问题所在。我有些困惑,因为父视图是我在情节提要中添加的 tableViewController,并且在我的学习材料中没有任何关于约束 tableView 本身的内容。感谢您的帮助。
  • "不是边缘,而是视图本身。"这对我来说很重要...它通常会自动将约束分配给边距而不是视图...
猜你喜欢
  • 2015-03-21
  • 2015-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多