2016-07-09 10 views
4

選択可能な絵文字を表示するコレクションビューがあります。現在のところ、絵文字は私には表示されていますが、これは問題ありませんが、画像ファイル自体には目立たない灰色の背景が目立つようです。コレクションビューのPNG画像の透明な背景

これらの絵文字画像の背景を灰色ではなく透明にすることはできますか?ここで

enter image description here

私のコードです:

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

あなたはクリアするコレクションビューの背景色を設定してみてくださいましたか? –

+0

@IshmeetSinghの設定は、画像間のスペースに影響するように見えます。その理由は紫色に設定されているからです。私はイメージ自体の背後にあるグレーを削除/変更するようには思えない。これらのPNGは透明ですので正しく表示されますか? :( – Oscar

+0

UIImageViewに画像を追加すると、通常はデフォルトで表示されます。 –

答えて

2
cellForItemAtIndexPath方法で

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 
関連する問題