以编程方式将 UILabel 添加到 UICollectionViewCell
Programmatically add a UILabel to a UICollectionViewCell
我有一个 UICollectionView,它以瀑布式布局呈现图像,效果很好。我现在正在尝试为每张图片添加描述。挑战是我试图以编程方式添加 UILabel,但它没有出现。我确定 label.text 包含文本。
class NTWaterfallViewCell :UICollectionViewCell, NTTansitionWaterfallGridViewProtocol{
var photoName = ""
var imageName : String?
var imageViewContent : UIImageView = UIImageView()
var label:UILabel = UILabel()
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.lightGray
contentView.addSubview(imageViewContent)
contentView.addSubview(label)
}
override func layoutSubviews() {
super.layoutSubviews()
imageViewContent.frame = CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.height)
imageViewContent.loadImageWithURL(imageName!)
label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
label.center = CGPoint(x: 160, y: 285)
label.textAlignment = .center
label.text = photoName
}
您在代码中创建了两个 UILabel
实例 - 第一个实例位于 var label: UILabel = UILabel()
,而这个实例已添加到 init
中的 contentView。
稍后,您将在 layoutSubViews()
中用新实例覆盖 self.label
,但此新实例永远不会添加到 contentView。
重新安排您的代码,以便只创建和添加一个实例。
我有一个 UICollectionView,它以瀑布式布局呈现图像,效果很好。我现在正在尝试为每张图片添加描述。挑战是我试图以编程方式添加 UILabel,但它没有出现。我确定 label.text 包含文本。
class NTWaterfallViewCell :UICollectionViewCell, NTTansitionWaterfallGridViewProtocol{
var photoName = ""
var imageName : String?
var imageViewContent : UIImageView = UIImageView()
var label:UILabel = UILabel()
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override init(frame: CGRect) {
super.init(frame: frame)
backgroundColor = UIColor.lightGray
contentView.addSubview(imageViewContent)
contentView.addSubview(label)
}
override func layoutSubviews() {
super.layoutSubviews()
imageViewContent.frame = CGRect(x: 0, y: 0, width: frame.size.width, height: frame.size.height)
imageViewContent.loadImageWithURL(imageName!)
label = UILabel(frame: CGRect(x: 0, y: 0, width: 200, height: 21))
label.center = CGPoint(x: 160, y: 285)
label.textAlignment = .center
label.text = photoName
}
您在代码中创建了两个 UILabel
实例 - 第一个实例位于 var label: UILabel = UILabel()
,而这个实例已添加到 init
中的 contentView。
稍后,您将在 layoutSubViews()
中用新实例覆盖 self.label
,但此新实例永远不会添加到 contentView。
重新安排您的代码,以便只创建和添加一个实例。