テーブルセルの高さの増加を検索しました。私はほとんど答えを得ませんでした。それらは私の状態には適していません。
場合:
高さのデフォルトが 150 のテーブル セルがあります。テーブル セル (タイトル、イメージ、アクション) に追加されたコンテンツは、テーブル セルのビューです。高さの異なる画像があります。
セルに画像をロードした後にセルの高さを増減する方法は?
テーブルセルの高さの増加を検索しました。私はほとんど答えを得ませんでした。それらは私の状態には適していません。
場合:
高さのデフォルトが 150 のテーブル セルがあります。テーブル セル (タイトル、イメージ、アクション) に追加されたコンテンツは、テーブル セルのビューです。高さの異なる画像があります。
セルに画像をロードした後にセルの高さを増減する方法は?
そのためには、特定のセルをリロードする必要があります
// Build the index path
NSIndexPath* indexPath1 = [NSIndexPath indexPathForRow:3 inSection:2];
// Add them in an index path array
NSArray* indexArray = [NSArray arrayWithObjects:indexPath1, nil];
// Launch reload for the two index path
[self.tableView reloadRowsAtIndexPaths:indexArray withRowAnimation:UITableViewRowAnimationFade];
そして、それからセルの高さを返す必要がありtableView: heightForRowAtIndexPath:
ますtableView: cellForRowAtIndexPath:
PS私はあなたが遅延読み込みを行っていると仮定しています(セルが作成された後に画像を読み込みます)
イメージをダウンロードしたら、次の行を書き込みます。
[self.tblStoryCardView beginUpdates]; [self.tblStoryCardView endUpdates];
そして、行の高さメソッドで画像の高さをダウンロードしました。
github にダミープロジェクトをアップロードしました。あなたはそれを確認することができます: https://github.com/govindprasadguptacool/Dynamic-Table-Cell-Height
私は使用していませんUIImageView+AFNetworking.h
が、行の高さを計算するためのアイデアは、どこかにロードされた後に画像の高さを計算することです
この方法があなたに役立つことを願っています
- (void)setImageWithURLRequest:(NSURLRequest *)urlRequest
placeholderImage:(UIImage *)placeholderImage
success:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, UIImage *image))success
failure:(void (^)(NSURLRequest *request, NSHTTPURLResponse *response, NSError *error))failure;
画像が読み込まれた後success
、画像の高さを計算し、image.size.height
これをテーブルの配列に追加します
NSMutableDictionary *record = [array objectAtIndex:index];
[record setObject:[NSString stringWithFormat:@"%f",image.size.height] forKey:@"imageheight"];
[array replaceObjectAtIndex:index withObject:record];
[tableView reloadData];
このように行の高さを設定します
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
NSMutableDictionary *record = [array objectAtIndex:index];
if ( [record objectForkey:@"imageheight"] ) {
return [[record objectForkey:@"imageheight"] floatValue] + yourmargin);
// yourmargin may be 150 or what ever be
} else {
return 150;
}
}
テーブルビューで画像を読み込んだ後cellForRowAtIndexPath
、読み込まれた画像の高さを計算します。行の高さを に指定しheightForRowAtIndexPath
ます。
このコードを試す
-(CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *Image= [imageAry objectAtIndex:indexPath.row];
NSLog(@"%f",Image.frame.size.height);
return size.height + 10;
}
heightForRowAtIndexPath:
次のようなデリゲートメソッドを使用してセルの高さを設定するだけです...
- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
{
UIImage *Tempimage= [yourArray objectAtIndex:indexPath.row];
UIImageView *imgTemp = [[UIImageView alloc]initWithImage:Tempimage];
return imgTemp.frame.size.height;
}