2016-07-09 6 views
4

Ich habe eine Sammlungsansicht, die auswählbare Emojis anzeigt. Derzeit werden mir die Emojis angezeigt, was gut ist, aber es gibt einen auffälligen grauen Hintergrund, der in der Bilddatei selbst nicht sichtbar ist.Transparenter Hintergrund für PNG-Bilder in der Sammlungsansicht

Ist es möglich, den Hintergrund dieser Emoji-Bilder transparent statt grau zu machen?

enter image description here

Hier ist mein 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") 
    } 
} 
+0

Sie versuchen Haben die Hintergrundfarbe der Sammlung Ansicht Einstellung zu löschen? –

+0

@IshmeetSingh Einstellung, die nur den Abstand zwischen den Bildern zu beeinflussen scheint, weshalb sie auf violett eingestellt ist. Ich kann nicht scheinen, das Grau hinter den Bildern selbst zu entfernen/zu ändern. Theyre Pngs so Transparenz sollte richtig zeigen? :( – Oscar

+0

Ja, normalerweise tut es standardmäßig, wenn Sie Bild zu dem UIImageView hinzufügen. –

Antwort

2

Im cellForItemAtIndexPath Methode

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 
Verwandte Themen