图像没有显示在我在Swift中的UICollectionView中

时间:2015-10-21 07:19:47

标签: ios swift nsdata nsurl

我的图片没有显示在我的UICollectionView中。我不确定这是什么错误。以下是我的代码。

MyCollectionView.swift

/** -- **/

    overide func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
            let cell = collectionView.dequeueReusableCellWithReuseIdentifier("MyCollectionViewCell", forIndexPath: indexPath) as! MyCollectionViewCell
            let event = events[indexPath.row]

            cell.imageView?.image = UIImage(named: "blabla_iPad@2x")

            return cell

        }

/** -- **/

MyCollectionViewCell.swift

import UIKit

class MyCollectionViewCell: UICollectionViewCell {
    var imageView: UIImageView!

    required init(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }

    override init(frame: CGRect) {
        super.init(frame: frame)

        imageView = UIImageView(frame: CGRect(x: 0, y: 16, width: frame.size.width, height: frame.size.height))
        imageView.contentMode = UIViewContentMode.ScaleAspectFit
        contentView.addSubview(imageView)
    }
}

即使我使用的是localPath,它仍然无效。

/*
    /Users/MNurdin/Library/Developer/CoreSimulator/Devices/B30917DD-1C57-430F-9ACF-6526B226CF15/data/Containers/Data/Application/35ACB17A-4C25-4A49-BE3D-04AA51F36CC0/tmp/jreGfApABajWPCnkfPBh.jpg
*/

cell.imageView?.image = UIImage(data: NSData(contentsOfURL: NSURL(fileURLWithPath:localPath)!)!)

5 个答案:

答案 0 :(得分:0)

 var imageView: UIImageView!

这应该是IBOutlet。

@IBOutlet weak var imageView: UIImageView!

并将其连接到您的故事板。

答案 1 :(得分:0)

它非常头疼。我不知道这里到底有什么不对,但这里有一些提示,我试着找到发生的事情

后:

cell.imageView?.image = UIImage(名称:“blabla_iPad @ 2x”)

print(cell.imageView?.image.bounds.size)
cell.imageView?.layer.borderWidth = 1.0
cell.imageView?.layer.borderColor = UIColor.blackColor().CGColor
你现在会看到其中一件事: 1.和以前一样,这意味着你要把你的形象画在细胞之外。尝试改变框架。 2.黑色边框空方块:意味着你的形象有问题 3.打印的框架尺寸为零。将imageView框架指定为等于图像的边界。

答案 2 :(得分:0)

  • 你确定iamge是在Xcassets中还是在top bundle中。将你的图像保存为" ImageName~ipad.png"。它只是ios在i-Pad上使用此图像的标识符。将图像放入Xcassets中。一切都会好起来的。

  • 并在您的自定义单元格类初始化程序中添加一些日志消息,以检查控制流程,以及您的自定义类是否有问题。

  • 您是否在viewDidLoad中注册了要与此单元格标识符一起使用的自定义类?

答案 3 :(得分:0)

您提到您正在从故事板中加载您的单元格。从故事板加载时,MyCollectionViewCell类中的init(frame:CGRect)方法将不会被调用,这意味着您的自定义UIImageView添加到单元格的contentView的代码也不会被调用。

因此,问题不在于图像没有加载到UIImageView中,而是与整个UIImageView完全没有加入到单元格中有关。

尝试将其移至awakeFromNib()而不是

答案 4 :(得分:0)

我有同样的问题。只发生在我切换到Swift 3后打开的xib文件上。我在xib中的任何UIImageView上禁用了Clip To Bounds,我可以再次看到图像,但现在我的cornerRadius设置不起作用。

在awakeFromNib中根据视图大小设置cornerRadius时也遇到问题,因为xib视图默认的帧大小为(1000,1000)。