我希望在设置UICollectionView
之后修改imageView.image
的布局。
我想知道为我的可重用单元格执行一次代码的正确方法。
到目前为止,适用于我的方法是在cellForRow()
方法中将自定义视图绘制在其中,但它会使代码变得混乱。我想在单元格的类中执行代码。
Init
(带框架)不起作用。它甚至没有从我的collectionView
调用。
此外,如果有人能够快速解释UICollectionViewCell
最重要的方法以及何时使用它们,我将不胜感激!
修改
这是我要从cellForRow()
中移除的代码并进入单元格的类:
firstProductCell.imageView.image = UIImage(named: "photo1")
firstProductCell.textLabel.text = "Featured title"
let imgview: UIImageView = UIImageView(frame: CGRectMake(0, 0, 1100, 600))
imgview.image = firstProductCell.imageView.image
let whiteView: UIView = UIView(frame: CGRectMake(1200, 0, 600, 600))
whiteView.backgroundColor = UIColor.whiteColor()
let view: UIView = UIView(frame: cell.bounds)
view.addSubview(imgview)
view.addSubview(whiteView)
UIGraphicsBeginImageContextWithOptions(view.bounds.size, view.opaque, 0.0)
view.layer.renderInContext(UIGraphicsGetCurrentContext()!)
firstProductCell.imageView.image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
答案 0 :(得分:1)
不幸的是,我没有看到,你是如何创建细胞的,但是: 如果您将自定义单元格类注册到collectionView:
collection.registerClass(CustomCollectionViewCell.classForCoder(), forCellWithReuseIdentifier: "CellIdentifier")
然后在你使用的cellForItemAtIndexpath
中:
let cell : CustomCollectionViewCell = collectionView.dequeueReusableCellWithReuseIdentifier("CellIdentifier", forIndexPath: indexPath) as! CustomCollectionViewCell
然后将调用CustomCollectionViewCell的init with frame方法:
override init(frame: CGRect)
{
super.init(frame: frame)
}
答案 1 :(得分:0)
awakeFromNib()
方法仅被调用一次,因此您可以在此处设置单元格,例如:-
class YourCollectionViewCell: UICollectionViewCell {
override func awakeFromNib() {
super.awakeFromNib()
//do some work here that needs to happen only once, you don’t wanna change them later.
}
}