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

你可能感兴趣的:(Frame和bounds)