以编程方式将UILabel添加到UICollectionViewCell

问题描述:

我有一个UICollectionView,它呈现瀑布式布局中的图像,这非常完美。我现在试图在每张图片上添加说明。面临的挑战是我试图以编程方式添加UILabel,但它没有出现。我确定label.text包含文本。以编程方式将UILabel添加到UICollectionViewCell

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

后来,您在layoutSubViews()中用新实例覆盖self.label,但这个新实例从未添加到contentView。

重新排列你的代码,以便只创建和添加一个实例。