如何为自定义的UITableViewCell添加约束
如何为自定义的UITableViewCell添加约束
除了我的图像视图无法正确对齐之外,我为我的表视图创建了一个自定义单元格,并且它的工作正常。
是否有办法为自定义单元格视图添加约束?无论是以编程方式还是其他方式?
这是我在故事板中的单元格外观 - 这是我希望在运行时实现的效果:
但是当我演示应用程序时,会出现以下情况:
这是故事板中的另一张图片:
带有 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)
}
如何将约束添加到自定义的UITableViewCell
在这个问题中,出现的原因是在UITableViewCell文件中的awakeFromNib()方法中,对于imageView属性进行了位置设置,但是没有添加约束,导致在运行时出现布局错误。解决方法是添加约束来确保imageView的位置正确。
解决方法如下:
在UITableViewCell文件中的awakeFromNib()方法中,添加约束来确保imageView的位置正确。具体代码如下:
override func awakeFromNib() {
let theWidth = UIScreen.mainScreen().bounds.width
contentView.translatesAutoresizingMaskIntoConstraints = false
imageView.translatesAutoresizingMaskIntoConstraints = false
contentView.topAnchor.constraintEqualToAnchor(topAnchor).isActive = true
contentView.leadingAnchor.constraintEqualToAnchor(leadingAnchor).isActive = true
contentView.trailingAnchor.constraintEqualToAnchor(trailingAnchor).isActive = true
contentView.bottomAnchor.constraintEqualToAnchor(bottomAnchor).isActive = true
imageView.centerXAnchor.constraintEqualToAnchor(contentView.leadingAnchor, constant: 115).isActive = true
imageView.centerYAnchor.constraintEqualToAnchor(contentView.topAnchor, constant: 15).isActive = true
}
通过添加约束来确保imageView的位置正确,可以解决布局错误的问题。
以上是关于如何将约束添加到自定义的UITableViewCell的解决方法。在代码中,我们通过添加约束来确保imageView的位置正确,从而解决了布局错误的问题。
问题出现的原因是默认情况下,自定义的UITableViewCell在添加约束时可能会出现一些问题,导致显示效果不符合预期。解决方法是正确设置约束。
首先,对于问题标签,将其设置在其容器的垂直中心,并将其前导间距设置为父视图。如下所示:
问题标签.centerY = 容器.centerY
问题标签.leadingSpace = 父视图
然后,对于图像,您还需要将其设置在其容器的垂直中心,并在其上设置1:1的比例。如下所示:
图像.centerY = 容器.centerY
图像.aspectRatio = 1:1
注意,如果您不希望图像在某些设备上放大(如果您设置了更大的单元格),您还可以检查宽度和高度。
完成上述设置后,您应该得到如下所示的效果:
最终的显示效果应该类似于以下图像:
如果以上方法没有解决您的问题,请参考提供的链接中的其他答案,您可能需要在代码中进行一些自定义设置。