如何使用没有Storyboard或nib的图像初始化集合视图?
我正在构建ImagePicker并希望在没有故事板的情况下进行构建
所以带有故事板的工作代码就是这样,但是如何以编程方式进行呢?
class PhotosCollectionViewCell: UICollectionViewCell {
@IBOutlet weak var imageView: UIImageView!
var image: UIImage? {
get { return imageView.image }
set { imageView.image = newValue }
}
override func prepareForReuse() {
super.prepareForReuse()
self.imageView.image = nil
}
}
我没有IBOutlet改变了代码:
class PhotosCollectionViewCell: UICollectionViewCell {
var imageView: UIImageView!
public var asset: PHAsset!
public var cellTappedAction: ((PHAsset) -> ()) = { _ in }
var image: UIImage? {
get { return imageView.image }
set { imageView.image = newValue }
}
override init(frame: CGRect) {
self.imageView = UIImageView()
super.init(frame: frame)
self.imageView.image = self.image
self.imageView.frame = self.frame
self.addSubview(self.imageView)
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
// fatalError("init(coder:) has not been implemented")
}
override func prepareForReuse() {
super.prepareForReuse()
self.imageView.image = nil
}
}
控制器:
self.collectionView?.register(PhotosCollectionViewCell.self, forCellWithReuseIdentifier: "Cell")
所以没有IBOutlet的第一张图片和带有它的第二张图片
答案 0 :(得分:0)
在viewDidLoad()
collectionView.register(PhotosCollectionViewCell.self, forCellReuseIdentifier: "photosCell")
在cellForItem
中将您的单元格取消并配置单元格的子视图
let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "photosCell", for: indexPath)
// configure cell subviews
请记住在PhotosCollectionViewCell
中初始化您的子视图,因为您不会使用IBOulets
override init(frame: CGRect) {
super.init(frame: frame)
imageView.frame = contentView.bounds
self.contentView.addSubview(imageView)
}
答案 1 :(得分:-1)
如果您尝试使用某个图像初始化您的单元格类,您应该可以通过覆盖init方法来实现此目的
override init(frame: CGRect) {
super.init(frame: frame)
//set initial image here
}