我的图片没有显示在我的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)!)!)
答案 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)。