iOS UITableViewCell宽度始终是320问题

问题:cell宽度一直是320。

原因: 初始化cell是会先找xib中找cell有就返回,xib cell默认宽度就是320。没有创建一个空白cell宽度也是320,这些都是在cell初始化前,初始化前cell的宽高默认就是320,44。cell的实际宽高需要在cell显示之后比如:

或者是启动图没有设置正确,检车启动图


- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        NSLog(@"size == %@",NSStringFromCGSize(self.frame.size));
    }
    return self;
}
2019-06-06 14:13:22.503870+0800 PICC[19304:516844] size == {320, 44}

- (void)layoutSubviews{
    [super layoutSubviews];
    NSLog(@"size == %@",NSStringFromCGSize(self.frame.size));
}
2019-06-06 14:13:22.544332+0800 PICC[19304:516844] size == {414, 44}

解决办法:

1. 在layoutSubviews方法中写代码约束,更新坐标等。
2. 或者在cell初始化时修改cell宽度
- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier{
    self = [super initWithStyle:style reuseIdentifier:reuseIdentifier];
    if (self) {
        self.frame = CGRectMake(0, 0, SCREEN_WIDTH, 44);

        NSLog(@"size == %@",NSStringFromCGSize(self.frame.size));
    }
    return self;
}
2019-06-06 14:24:18.725489+0800 PICC[19425:561276] size == {414, 44}
3. 重写cell的frame方法
-(void)setFrame:(CGRect)frame{
    frame.size.width = SCREEN_WIDTH;
    [super setFrame:frame];
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容