iOS cell加载纯图片自适应

在网络

先说说今天遇见的坑,在自适应加载去cell的时候遇见了一个坑
- (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath {
UITableViewCell *cell = [self.tavleView cellForRowAtIndexPath:indexPath];
return cell.frame.size.height;
}
刚开始这样写 死活没发现那里错了 但是就是报错,最后经过大神指点才知道 cell在加载的时候会先走 cellforrowheight这个方法 所以这个方法就报错了
解决的办法就是
- (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath {
self.tableView.delegate = nil;
UITableViewCell *cell = [self.tavleView cellForRowAtIndexPath:indexPath];
self.tableView.delegate = self;
return cell.frame.size.height;
}
//最后的解决办法就是用模型

  • (UITableViewCell )tableView:(UITableView )tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    GoodDetailPicModel * model = _detailPicArray[indexPath.section];
    //NSLog(@”–%@”,model.imageUrl);
    GoodDetailPicCell * cell = [tableView dequeueReusableCellWithIdentifier:cellID forIndexPath:indexPath];
    [cell.GoodDetailPic sd_setImageWithURL:[NSURL URLWithString:model.imageUrl] placeholderImage:[UIImage
    imageNamed:@”123.jpg”] completed:^(UIImage *image, NSError *error,
    SDImageCacheType cacheType, NSURL *imageURL) {
    if (image && !model.heightStr) {;
    model.heightStr = [NSString stringWithFormat:@”%f”,image.size.height /(image.size.width /
    self.view.frame.size.width)];
    [self.tavleView reloadData];
    }
    }];
    return cell; }
  • (CGFloat)tableView:(UITableView )tableView heightForRowAtIndexPath:(NSIndexPath )indexPath {
    GoodDetailPicModel * model = _detailPicArray[indexPath.section];
    if (model.heightStr) {
    return [model.heightStr floatValue];
    }
    return 44; }

就是在没有加载出来之前 先返回固定高度 等高度计算出来再一一进行relodata

你可能感兴趣的:(oc---细节)