【问题标题】:How to add constraints to a Custom UITableViewCell如何向自定义 UITableViewCell 添加约束
【发布时间】:2015-08-26 05:53:37
【问题描述】:

我为我的表格视图创建了一个自定义单元格,它工作正常,只是我的图像视图无法正确对齐。

有没有办法给自定义单元格视图添加约束?以编程方式还是其他方式?

这是我的单元格在故事板中的样子 - 这是我希望在运行时实现的:

但是当我演示应用程序时,会发生这种情况:

这是故事板中的另一张图片:

视图控制器/w TableView

@IBOutlet weak var tableView: UITableView!

override func viewDidLoad() {
    super.viewDidLoad()


    println(questions)
    println(finalResults)

    let theWidth = view.frame.size.width
    let theHeight = view.frame.size.height

    tableView.frame = CGRectMake(0,0, theHeight, theWidth)
}

单元格视图控制器

override func awakeFromNib() {

    let theWidth = UIScreen.mainScreen().bounds.width
    contentView.frame = CGRectMake(0,0, theWidth, 64)

    answerImage.center = CGPointMake(115, 15)
}

【问题讨论】:

  • 您是否尝试在情节提要中设置一些约束(trailingSpace、height/width/ratio、...)? 顺便说一句,如果你只需要添加一个“✔︎”,你可能想看看UITableViewCellAccessoryCheckMark,它可能会更好看。
  • 嘿,我确实尝试在情节提要中添加约束,但t work. I havnt 没有查看 UITableViewCellAccessoryCheckMark 但我正在创建一个测验应用程序,并且勾号表示正确或错误答案所以我想让它亮起来会更好。
  • 你自己的图片没问题。您能否向我们展示:tableView 和 customCell 的当前 UI tree(即:tableview > contentview > ...)以及您尝试使用的约束?
  • 我尝试的约束是 - 添加缺失的约束以及在 Pin > 添加新约束下手动。对于 UI 树,我不能 100% 确定我理解您希望看到的内容,抱歉。
  • 我所说的i.stack.imgur.com/VPNYD.png。无论如何,在几分钟内发布答案。

标签: swift constraints tableview cell


【解决方案1】:

假设您从一个视图控制器开始,将一个表格和一个单元格拖到表格中......

在 ViewController 中:UIViewController...{

@IBOutlet weak var resultsTable: UITableView! // connect to tableView

override func viewDidLoad() {
  super.viewDidLoad()

  let theWidth = view.frame.size.width
  let theHeight = view.frame.size.height

  resultsTable.frame = CGRectMake(0,0, theWidth, theHeight)
}
}

在 UITableViewCell 文件中:

@IBOutlet weak var imageView: UIImageView!

override func awakeFromNib() {

  let theWidth = UIScreen.mainScreen().bounds.width
  contentView.frame = CGRectMake(0,0 theWidth, 64)

  imageView.center = CGPointMake(115, 15) //mess around with these #
}

【讨论】:

  • 谢谢,我有一个 TableViewCell 控制器,而我的 TableView 位于 ViewController 而不是 UITableViewController 中。
  • 您是否将表格拖到您的 ViewController 中?如果是这样,您是否将其连接到您的 ViewController?在示例中,我从一个 VC 开始添加了一个表格和单元格。
  • 是的,我将一个表格拖到了我的 ViewController 中。它是连接的,因为它所有的工作都没有对齐。我稍后会测试这个例子!非常感谢。
  • 您好,我已更新我的问题以包含我的项目代码。我无法让它工作。我收到致命错误:使用错误请求打开可选值时意外发现 nil。
  • 这与单元格或图像放置无关。当您没有任何信息通过您的代码时,您正在展开 (!) (说那里有东西)。您必须在代码中的其他地方查看该问题。
【解决方案2】:

您只需正确设置约束。事实上,即使 Add Missing ConstraintsReset to Suggested Constraints 很方便,有时它们也不知道您想要什么,因此结果并不总是您所期望的。

您可能想要在此处执行以下操作。

对于你的问题标签将它设置在它的容器的中心 Y 并将它的前导空间设置为超级视图。像这样:

然后对于您的图像,您也想将其设置在其容器的 Y 中心,并在其上设置 1:1 的比例。像这样:

请注意,如果您不希望图像升级(如果您在某些设备上设置更大的单元格),您可能还需要检查 widthheight p>

你现在应该有类似的东西了:

结果:

如果有帮助,请告诉我。

PS:我没有你的图片,所以我只是在 uiimageview 上设置了背景颜色

【讨论】:

  • 非常感谢您的帮助。我已经设法让它工作,但现在我有另一个问题。分隔单元格的线不会一直延伸到视图的一侧。 i.imgur.com/5jNpFBZ.png
  • 这是自 iOS 7 以来的默认行为。它应该可以直接从情节提要中自定义,就像您在此处看到的那样:stackoverflow.com/questions/18773239/…。但 ! iOS 8 存在小故障。因此您实际上需要以编程方式进行(如果需要,请检查链接上的答案和其他类似问题)。
猜你喜欢
  • 1970-01-01
  • 2022-12-17
  • 2021-05-16
  • 1970-01-01
  • 2017-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多