类似微博列表,每一个UITableViewCell有一个图片,当下拉的时候,会有图片重叠.怎么去掉重叠的呢?


类似微博列表,每一个UITableViewCell有一个图片,当下拉的时候,会有图片重叠.怎么去掉重叠的呢? 请看图

TableView:


 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString * ID = @"WeiboCustomCellIdentifier";

    [tableView registerClass:[WeiboCustomCell class] forCellReuseIdentifier:ID];
    WeiboCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
    MStatusItem *status = [_data_array objectAtIndex:indexPath.row];    
    [cell.screenNameLabel setText:status.user_screen_name];
    [cell.timeLabel setText:status.pubtime_str];
    [cell.weiboTextLabel setText:status.getPlainText];
    cell.userAvatarUrl = status.user_proimg;
    if(status.hasImage){
        cell.weiboImageUrl = status.tnpic;
    }else{
        cell.weiboImageUrl = @"";
        cell.weiboImageView.hidden = YES;
    }    
    return cell;
}

CustomTableViewCell:


 - (void)setWeiboImageUrl:(NSString *)weiboImageUrl{
    if ([weiboImageUrl isEqualToString:@""] == NO && weiboImageUrl != nil){
        NSURL *imageURL = [NSURL URLWithString: weiboImageUrl];
        dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
            NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
            dispatch_async(dispatch_get_main_queue(), ^{
                CGSize textSize = [self.weiboTextLabel.text sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:CGSizeMake(self.frame.size.width - 10.0 * 3 - 60.0, 2000.0f)];
                float height = textSize.height + 20.0 * 3;
                NSLog(@"Height:%f", height);                
                self.weiboImageView = [[UIImageView alloc] initWithFrame: CGRectMake(65.0, height, 100, 124)];               
                UIImage *image = [[UIImage alloc]initWithData:imageData];
                self.weiboImageView.image = image;
                self.weiboImageView.contentMode = UIViewContentModeScaleAspectFit;
                self.userInteractionEnabled = NO;                                
                [self.contentView addSubview:self.weiboImageView];                
            });
        });
    }
}

ios6 ios xcode objective-c

河原木志穂 11 years, 1 month ago

 - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath

{ static NSString * ID = @"WeiboCustomCellIdentifier";


 WeiboCustomCell *cell = [tableView dequeueReusableCellWithIdentifier:ID];
if (nil == cell) {
    cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:ID];
}
MStatusItem *status = [_data_array objectAtIndex:indexPath.row];
[cell.screenNameLabel setText:status.user_screen_name];
[cell.timeLabel setText:status.pubtime_str];
[cell.weiboTextLabel setText:status.getPlainText];
cell.userAvatarUrl = status.user_proimg;
if(status.hasImage){
    cell.weiboImageUrl = status.tnpic;
}else{
    cell.weiboImageUrl = @"";
    cell.weiboImageView.hidden = YES;
}
return cell;

}


 - (void)setWeiboImageUrl:(NSString *)weiboImageUrl{
if ([weiboImageUrl isEqualToString:@""] == NO && weiboImageUrl != nil){
    NSURL *imageURL = [NSURL URLWithString: weiboImageUrl];
    dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_BACKGROUND, 0), ^{
        NSData *imageData = [NSData dataWithContentsOfURL:imageURL];
        dispatch_async(dispatch_get_main_queue(), ^{
            CGSize textSize = [self.weiboTextLabel.text sizeWithFont:[UIFont systemFontOfSize:14.0f] constrainedToSize:CGSizeMake(self.frame.size.width - 10.0 * 3 - 60.0, 2000.0f)];
            float height = textSize.height + 20.0 * 3;
            NSLog(@"Height:%f", height);
            self.weiboImageView = [[UIImageView alloc] initWithFrame: CGRectMake(65.0, height, 100, 124)];
            if (nil == self.weiboImageView) {
                self.weiboImageView = [[UIImageView alloc] initWithFrame:CGRectZero];
                [self.contentView addSubview:self.weiboImageView];
            }
            self.weiboImageView = [[UIImageView alloc] initWithFrame: CGRectMake(65.0, height, 100, 124)];
            UIImage *image = [[UIImage alloc]initWithData:imageData];
            self.weiboImageView.image = image;
            self.weiboImageView.contentMode = UIViewContentModeScaleAspectFit;
            self.userInteractionEnabled = NO;
        });
    });
}

}

sylvain answered 11 years, 1 month ago

Your Answer