以编程方式将 UILabel 添加到 UICollectionViewCell
Posted
技术标签:
【中文标题】以编程方式将 UILabel 添加到 UICollectionViewCell【英文标题】:Programmatically add a UILabel to a UICollectionViewCell 【发布时间】:2017-09-25 14:39:57 【问题描述】:我有一个 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
【问题讨论】:
【参考方案1】:您在代码中创建了两个 UILabel
实例 - 第一个位于 var label: UILabel = UILabel()
,这个实例将添加到您的 init
中的 contentView。
稍后,您将在 layoutSubViews()
中用一个新实例覆盖 self.label
,但这个新实例永远不会添加到 contentView。
重新排列您的代码,以便只创建和添加一个实例。
【讨论】:
以上是关于以编程方式将 UILabel 添加到 UICollectionViewCell的主要内容,如果未能解决你的问题,请参考以下文章
以编程方式将 UILabel 添加到自定义 tableViewCell