在这种情况下,插座是UIImageVIEw,在UICollectionVIEwCell类中访问时为nil,但在外部访问时工作正常.
UICollectionVIEw代码:
func collectionVIEw(collectionVIEw: UICollectionVIEw,cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionVIEwCell { let cell = collectionVIEw.dequeueReusableCellWithReuseIDentifIEr(AlbumCellIDentifIEr,forIndexPath: indexPath) as! AlbumCell cell.imageVIEw.image = getthumbnail() cell.imageVIEw.contentMode = .ScaleAspectFill cell.imageVIEw.layer.masksToBounds = true cell.imageVIEw.layer.cornerRadius = cell.frame.size.wIDth / 2 return cell}
UICollectionVIEwCell代码:
class AlbumCell: UICollectionVIEwCell { @IBOutlet weak var imageVIEw: UIImageVIEw! overrIDe init(frame: CGRect) { super.init(frame: frame) doInit(frame) } required init?(coder aDecoder: NSCoder) { super.init(coder: aDecoder) doInit(frame) } private func doInit(frame: CGRect) { // Round corners imageVIEw.layer.masksToBounds = true imageVIEw.layer.cornerRadius = frame.size.wIDth / 2 }}
UICollectionVIEwCell类内的圆角失败,因为imageVIEw为零,但UICollectionVIEw类内的圆角成功,因此imageVIEw似乎已连接.
为什么imageVIEw nil在UICollectionVIEwCell类中?
解决方法 你可能想尝试在awakeFromNib中调用doInit但是我认为框架可能尚未初始化(虽然没有测试):overrIDe func awakeFromNib() { super.awakeFromNib() doInit(frame)}
由于您希望相对于视图的帧更新cornerRadius,我会在layoutSubvIEws中执行此 *** 作,因此任何帧更改都将直接反映到角半径值:
overrIDe func awakeFromNib() { super.awakeFromNib() imageVIEw.layer.masksToBounds = true}overrIDe func layoutSubvIEws() { super.layoutSubvIEws() imageVIEw.layer.cornerRadius = frame.size.wIDth / 2}
更新:既然你说过,你不使用nib文件加载视图,只需将imageVIEw.layer.masksToBounds = true移动到init(frame:CGRect)并删除awakeFromNib.
总结以上是内存溢出为你收集整理的ios – UICollectionViewCell出口nil在类中但在使用dequeueReusableCellWithReuseIdentifier后工作全部内容,希望文章能够帮你解决ios – UICollectionViewCell出口nil在类中但在使用dequeueReusableCellWithReuseIdentifier后工作所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)