在自定义UICollectionViewCell中将叠加添加到UIImageView

时间:2016-07-07 17:19:05

标签: swift uiimageview uicollectionviewcell

我有一个带有一些属性的自定义UICollectionViewCell类:

    $(function() {

        $('.toggle').click(function(e) {
          if($(window).width() < 768){
          $(".nav ul").slideToggle("fast");  
         }
        });
       });

我填充数据的方法如下:

class SimpleCollectionCell: UICollectionViewCell {

    @IBOutlet weak var title_more: UILabel!

    @IBOutlet weak var image_more: UIImageView!

    @IBOutlet weak var title: UILabel!

    @IBOutlet weak var distance: UILabel!

    @IBOutlet weak var activity: UIImageView!

}

单元格按原样呈现并显示如下:

UICollectionViewCells

我的问题是如何让图片变暗?

我尝试在cellForItemAtIndexPath方法的底部添加以下代码,但滚动时会变暗,因为它会继续添加更多子视图!

override func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {

    let cell = collectionView.dequeueReusableCellWithReuseIdentifier("cell", forIndexPath: indexPath) as! SimpleCollectionCell

    var place = Place()

    // set the current place
    place = Places[indexPath.row]

    // set the label
    cell.title.text = place.title

    // setup url
    let url = NSURL(string: currentThing.imageUrl!)

    // set the cell image
    cell.activity.hnk_setImageFromURL(url!)

    return cell

}

1 个答案:

答案 0 :(得分:3)

快速解决方案是检查是否已将叠加层添加到单元格中,如果是,则不添加另一个叠加层。

使用标签:

if cell.activity.viewWithTag(99) == nil {
    // Create a subview which will add an overlay effect on image view
    let overlay = UIView(frame: CGRect(x: 0, y: 0, width: cell.frame.size.width, height: cell.frame.size.height))
    overlay.backgroundColor = UIColor(red: 0, green: 0, blue: 0, alpha: 0.3);
    overlay.tag = 99

    // Add the subview to the UIImageView
    cell.activity.addSubview(overlay)
}

或者只是在单元格内创建叠加层。