Frame和bounds

写了一个纯代码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

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容