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)
}
}
我强烈建议你采用自动收费和约束 因为如果您使用约束,那么当视图发生变化时,autolayout系统将自动将它们放在您想要的位置。例如:stackoverflow网站/问询/25895311/…
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。