在单元格的ContentView外部添加视图

时间:2019-04-05 19:13:53

标签: ios swift uitableview uicollectionview uicollectionviewcell

我有一个集合视图单元格,我想向其中添加一个视图。 Apple声明应将视图添加到contentView中。这是文档:

  

在配置单元格时,您可以将表示单元格内容的所有自定义视图添加到此视图。单元格对象将内容放置在此视图中任何背景视图的前面。

但是,似乎我也可以在contentView内添加视图,并且没有警告或崩溃。这是我的代码。请注意评论QUESTION-我想知道是否可以这样做:

class MyCollectionViewCell: UICollectionViewCell {

    @IBOutlet private var imageView: UIImageView!

    private let titleLabel = UILabel(frame: .zero)

    override func awakeFromNib() {
        super.awakeFromNib()

        // QUESTION: Is this ok? Notice I am not adding the `titleLabel` to `self.contentView`
        self.addSubview(titleLabel)

        let horizontalCenterConstraint = NSLayoutConstraint(item: titleLabel, attribute: .centerX, relatedBy: .equal, toItem: self, attribute: .centerX, multiplier: 1.0, constant: 0)
        let verticalCenterConstraint = NSLayoutConstraint(item: titleLabel, attribute: .centerY, relatedBy: .equal, toItem: self, attribute: .centerY, multiplier: 1.0, constant: 0)

        self.addConstraint(horizontalCenterConstraint)
        self.addConstraint(verticalCenterConstraint)
    }
}

在上面的代码中,我没有使用self.contentView.addSubview添加视图,而是简单地做了self.addSubview。可以吗?

2 个答案:

答案 0 :(得分:0)

大多数事情是可能,问题是为什么要这样做?

直接违反API作者的建议,您可能要冒大量潜在问题的风险。例如

  • 您可能正在破坏自己不知道的东西
  • 您可能会对效果产生不利影响
  • 即使目前可以使用,它也可能会在将来中断,并且作者没有理由阻止这种情况的发生。

如果您尝试做的事情是不可能的,并且您对风险没事,那就去做。否则,请遵循作者的明确说明。

答案 1 :(得分:0)

是的,我尝试直接添加cell而不是contentView。现在,发生了一件奇怪的事情,收藏夹视图无法滚动。我花了一个小时才弄清楚应该将自己添加到contentView