Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Transparent background for PNG images in collection view

I have a collection view displaying selectable emojis. Currently the emojis are displayed to me, which is fine, but there is a noticeable grey background, which is not apparent in the image file itself.

Is it possible to make the background of these emoji images transparent instead of grey?

enter image description here

Here is my code:

import UIKit

class EmojiPopup: UIView,UICollectionViewDataSource,UICollectionViewDelegate
{
    var collocationView : UICollectionView!
    var arrImagesList:NSMutableArray!
    override init(frame: CGRect)
    {
        super.init(frame: frame)
        arrImagesList = NSMutableArray()
        self.backgroundColor = UIColor.purpleColor().colorWithAlphaComponent(0.1)
        let layout = UICollectionViewFlowLayout()
        //header gap
        layout.headerReferenceSize = CGSizeMake(30,30)
        //collection view item size
        layout.itemSize = CGSizeMake(75, 75)
        layout.minimumInteritemSpacing = 20
        layout.minimumLineSpacing = 10
        collocationView = UICollectionView(frame: CGRectMake(50,50,UIScreen.mainScreen().bounds.screenWidth - 100,UIScreen.mainScreen().bounds.screenHeight - 100), collectionViewLayout: layout)
        self.addSubview(collocationView)

        collocationView.backgroundColor = UIColor.purpleColor().colorWithAlphaComponent(0.001)
        collocationView.dataSource = self
        collocationView.delegate = self
        collocationView.registerClass(UICollectionViewCell.self, forCellWithReuseIdentifier: "cellIdentifier")

        let fm = NSFileManager.defaultManager()
        let path = NSBundle.mainBundle().resourcePath!
        let items = try! fm.contentsOfDirectoryAtPath(path)

        for item in items
        {
            if item.hasSuffix("png") && item.containsString("@") == false && item.containsString("AppIcon") == false && item.containsString("tick_blue") == false && item.containsString("video_camera") == false
            {
                arrImagesList.addObject(item)
            }
        }
    }
    var completeHandler:((String)->())?
    func showDetails(viewParent:UIView,doneButtonClick:((String)->())?)
    {
        completeHandler = doneButtonClick
        viewParent.addSubview(self)
    }
    func collectionView(collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int
    {
        return arrImagesList.count
    }

    func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell
    {
        let identifier="ImageCell\(indexPath.section)\(indexPath.row)"
        collectionView.registerClass(ImageViewCell.self, forCellWithReuseIdentifier:identifier)
        let cell = collectionView.dequeueReusableCellWithReuseIdentifier(identifier, forIndexPath: indexPath) as! ImageViewCell
        cell.backgroundColor = UIColor(white:1, alpha:0)
        cell.imgView.image = UIImage(named:arrImagesList[indexPath.row] as! String)
        cell.imgView.contentMode = .ScaleAspectFit
        return cell
    }  
//    func collectionView(collectionView: UICollectionView,
//        layout collectionViewLayout: UICollectionViewLayout,
//        sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize
//    {
//        let width=UIScreen.mainScreen().bounds.size.width-50
//        return CGSize(width:width/3, height:width/3)
//    }

    func collectionView(collectionView: UICollectionView, didSelectItemAtIndexPath indexPath: NSIndexPath)
    {
        //let cell=collectionView.cellForItemAtIndexPath(indexPath) as! ImageViewCell

        UIView.animateWithDuration(0.3, animations:{
            self.collocationView.alpha=0
            }, completion: { finished in

                if self.completeHandler != nil
                {
                    self.completeHandler!(self.arrImagesList[indexPath.row] as! String)
                }
                self.removeFromSuperview()
        })

    }
    func showDetails(viewParent:UIView,dictData : [String:String],index:Int,doneButtonClick:(()->())?,cancelBUttonClick:(()->())?)
    {
    }
    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }
}
like image 631
Oscar Avatar asked Oct 19 '22 06:10

Oscar


1 Answers

In the cellForItemAtIndexPath method

let cell = collectionView.dequeueReusableCellWithReuseIdentifier(identifier, forIndexPath: indexPath) as! ImageViewCell
cell.backgroundColor = UIColor(white:1, alpha:0)
cell.imgView.image = UIImage(named:arrImagesList[indexPath.row] as! String)
cell.imgView.backgroundColor = UIColor.clearColor()
cell.imgView.opaque = false
cell.imgView.contentMode = .ScaleAspectFit

return cell
like image 184
Asdrubal Avatar answered Nov 15 '22 08:11

Asdrubal