写了一个纯代码tableView嵌套collectionView的demo,最后结束的时候发现图片显示乱七八糟,初始以为是使用的第三方SDWebImage加载图片导致的错乱,找一圈,发现没什么错误,又怀疑是cell复用的问题,重新写了代码之后发现问题还是老样子。真的是不知道哪里错了,就重新写了带xib的UI显示,发现正常了。所以问题总结在collectionviewcell的自定义初始化方法上,原来的代码如下
-(instancetype)initWithFrame:(CGRect)frame{
self = [super initWithFrame:frame];
if (self) {
self.backgroundColor = [UIColor cyanColor];
self.img = [[UIImageView alloc]initWithFrame:frame];
self.vipOrNot = [[UILabel alloc]initWithFrame:CGRectMake(frame.size.width-30, 5, 30, 10)];
self.img.contentMode = UIViewContentModeScaleAspectFit;
[self addSubview:self.img];
[self addSubview:self.vipOrNot];
}
return self;
}
看起来貌似没问题。。。。
为了一点一点排查,我一行一行的改,运气还不错第一行就找到了错误:
self.img = [[UIImageView alloc]initWithFrame:frame]; 就是这个frame参数
,一定不能用frame来定义imageView的位置。
又去查了下frame和bounds的关系。真的是细思极恐。
具体见下链接,别人写得更好,我就不班门弄斧了
https://www.jianshu.com/p/964313cfbdaa
网友评论