Swift 如何向自定义UITableViewCell添加约束
我已经为我的表视图创建了一个自定义单元格,它工作正常,只是图像视图不能正确对齐 有没有办法向自定义单元视图添加约束?以编程方式还是其他方式 这就是我的手机在故事板中的样子——这就是我希望在运行时实现的: 但当我演示应用程序时,会发生以下情况: 下面是故事板中的另一幅图像: 视图控制器/w表视图 单元视图控制器Swift 如何向自定义UITableViewCell添加约束,swift,constraints,tableview,cell,Swift,Constraints,Tableview,Cell,我已经为我的表视图创建了一个自定义单元格,它工作正常,只是图像视图不能正确对齐 有没有办法向自定义单元视图添加约束?以编程方式还是其他方式 这就是我的手机在故事板中的样子——这就是我希望在运行时实现的: 但当我演示应用程序时,会发生以下情况: 下面是故事板中的另一幅图像: 视图控制器/w表视图 单元视图控制器 假设您从视图控制器开始,将表和单元格拖到表中 在ViewController中:UIViewController…{ @IBOutlet weak var resultsTable:
假设您从视图控制器开始,将表和单元格拖到表中 在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 #
}
您只需正确设置约束即可。事实上,即使
添加缺少的约束
和重置为建议的约束
很方便,但有时它们不知道您想要什么,因此结果也不可能总是您所期望的
您可能希望在这里执行以下操作
对于您,将问题标签设置在其容器的中心Y,并将其前导空间设置为superview。如下所示:
然后对于您的图像,您希望将其也设置在容器的中心Y,并在其上设置1:1的比率。如下所示:
请注意,如果您不希望图像放大(如果您在某些设备上设置了较大的单元格),您可能还需要检查宽度
和高度
您现在应该有这样的内容:
结果是:
如果有帮助,请告诉我
PS:我没有你的图像,所以我只是在uiimageview上设置了一个背景色你是否尝试在故事板中设置一些约束条件(牵引空间、高度/宽度/比率等)?顺便说一下,如果你只需要添加一个“✔︎" 你可能想看看
UITableViewCellAccessoryCheckMark
,它看起来可能会更好。嘿,我确实尝试在故事板中添加约束,但没有起作用。我没有看过UITableViewCellAccessoryCheckMark,但我正在创建一个测验应用程序,勾号表示正确或错误的答案,所以我认为ught使其明亮会更好。对于您自己的图像没有问题。您可以向我们显示:您的tableView和customCell的当前UI树(即:tableView>contentview>…)以及您尝试使用的约束?我尝试的约束是-添加缺少的约束,也可以在“Pin”>“添加新约束”下手动添加。对于UI树,我不能100%确定我是否理解您希望看到的内容,抱歉。我正在谈论的树:。无论如何,几分钟后发布答案。谢谢,我有一个TableViewCe控制器ll和我的TableView位于ViewController中,而不是UITableViewController中。你是否将表格拖到了ViewController中?如果是,你是否将其连接到了ViewController?在示例中,我从VC开始添加了表格和单元格。是的,我将表格拖到了ViewController中。它是连接的,因为所有表格都无法对齐。我将测试示例稍等!非常感谢。您好,我已经更新了我的问题以包含我的项目代码。我无法使其正常工作。我收到了致命错误:在使用错误请求展开可选值时意外发现零。这与单元格或图像放置无关。您正在展开(!)(表示存在某些内容)当您的代码中没有任何信息时。您必须在代码中的其他地方查找该问题。非常感谢您的帮助。我已设法使其工作,但现在我遇到另一个问题。分隔单元格的行不会一直延伸到视图的一侧。这是自iOS 7以来的默认行为。它应该您可以直接从故事板上进行自定义,就像您在这里看到的:。但是!iOS 8有一个小问题。因此,您实际上需要以编程方式进行此操作(如果需要,请查看链接上的答案和其他类似问题)。
@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)
}
}
@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 #
}