开发者社区> 问答> 正文

如何在重用的表视图单元格中正确显示子视图

0

我在一个uitableview细胞里有一个uicollectionview。对于2个表视图单元格,uicectionview单元格内的标签显示正确(在图像下面),但对于其中一个单元格,标签不显示,它显示在图像的顶部。

见下文-注意黑色的标签。对于一个tableViewCells,当我希望它在底部显示时,标签就会显示在图像的上方。我怎么才能解决这个问题?我认为这与tableView重用单元格有关。

以下是集合视图单元格的代码

class BookCollectionViewCell: UICollectionViewCell {
    var imageView: UIImageView!
    var label: UILabel!

    override init(frame: CGRect) {
        super.init(frame: frame)

        imageView = UIImageView()
        imageView.contentMode = .scaleAspectFill
        imageView.isUserInteractionEnabled = false
        contentView.addSubview(imageView)

        label = UILabel()
        label.numberOfLines = 1
        label.font = UIFont(name: "CeraPro-Regular", size: 12);
        label.textColor = UIColor.black
        label.center = self.center
        label.translatesAutoresizingMaskIntoConstraints = false
        label.textAlignment = .center
        label.backgroundColor = UIColor.black
        contentView.addSubview(label)

    }

    override func layoutSubviews() {
        super.layoutSubviews()

        var lframe = label.frame
        lframe.size.height = 20
        lframe.size.width = self.frame.size.width
        lframe.origin.x = 0
        lframe.origin.y = self.frame.size.height - 20
        label.frame = lframe

        var frame = imageView.frame
        frame.size.height = self.frame.size.height - 38
        frame.size.width = self.frame.size.width
        frame.origin.x = 0
        frame.origin.y = 5
        imageView.frame = frame

        imageView.layer.shadowColor = UIColor.gray.cgColor
        imageView.layer.shadowOpacity = 0.3
        imageView.layer.shadowOffset = CGSize.zero
        imageView.layer.shadowRadius = 5
        imageView.layer.shadowOffset = CGSize(width: 4, height: 4)
        imageView.layer.masksToBounds = false
    }
    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

展开
收起
游客5akardh5cojhg 2019-12-04 13:37:39 423 0
1 条回答
写回答
取消 提交回答
  • 我强烈建议你采用自动收费和约束 因为如果您使用约束,那么当视图发生变化时,autolayout系统将自动将它们放在您想要的位置。例如:stackoverflow网站/问询/25895311/…

    2019-12-04 13:39:17
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载