2016-07-11 7 views
0

私のラベルを動的にサイズ変更しています。私のタブベルビューのセルに表示されているセルの数です。その新しいセルがスクロールしている間、画像ビューのサイズが大きくなっています。なぜ私のtabelviewセルをスクロールしながら私のimageviewが縮小していますか?

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

    TVcell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier forIndexPath:indexPath]; 
    if (cell == nil) 
    cell = [[TVcell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; 
    cell.titleLabel.text = [[[arrayData objectAtIndex:indexPath.row]valueForKey:@"title"]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    cell.txtlabel.text = [[[arrayData objectAtIndex:indexPath.row] valueForKey:@"description"]stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; 
    cell.IMGLabel.contentMode = UIViewContentModeScaleAspectFill; 
    [cell.IMGLabel sd_setImageWithURL:[NSURL URLWithString:[enclosureUrlArray objectAtIndex:indexPath.row]] 
         placeholderImage:[UIImage imageNamed:@"placeholder"] options:indexPath.row == 0 ? SDWebImageRefreshCached : 0]; 
    [cell.IMGLabel.layer setMasksToBounds:YES]; 
    [cell.IMGLabel.layer setCornerRadius:2.5f]; 
    [cell setNeedsLayout]; 
    return cell; 
} 

答えて

0
  1. dequeueReusableCellWithIdentifier:forIndexPath:nilを返していないので、

    if (cell == nil) cell = [[TVcell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];

  2. ノートを削除決して、UITableViewCellの内部setCornerRadiusは滑らかではなく、スクロールになります。 Core Graphicsを使用して角を丸くしてイメージを作成する方が効果的です。

  3. [cell setNeedsLayout]; - UITableviewCellは自動的にセルビューをレイアウトするため、余分です。

  4. あなたがのviewDidLoadに設定する必要がありセルフサイジング電池を使用する場合:あなたはそれを再利用することができます前に、セルから以前のデータをクリアする必要があるため、これらが起こっている

    tableView.estimatedRowHeight = 85.0; tableView.rowHeight = UITableViewAutomaticDimension;

+0

まだ同じ問題が発生しています – karthik

+0

セルフサイジングセルを使用しましたか? – Igor

+0

はいセルサイズ変更セルのみを使用しました – karthik

0

を。

TVcellクラスでは、メソッドprepareForReuseをオーバーライドし、ラベルと画像ビュー内のすべてのデータをnilに設定する必要があります。

+0

sd_setImageWithURLは画像に対して自動的に行います。レイアウトの前にラベルが設定されます。したがって、手動でデータを消去する必要はありません。 – Igor

関連する問題