0

私はプロジェクトに取り組んでいます。現在、問題が発生しています。1つのViewControllerに3つのUITableViewがあります。これは次のようになります。

ここに画像の説明を入力してください

さて、最初のTableView(一番上のもの)には、55ピクセルのサイズの行が1つだけあり、サイズを変更する必要はありません。次に、2番目はTableViewで、これも1行ですが、この行のサイズを変更する必要があるのは、その内容によって異なります。現在、このTableViewはこの行を表示しています。

ここに画像の説明を入力してください

この行のサイズを変更する必要があるのは、その中のテキストの長さによって異なります。サイズを計算するために私がしたことは次のとおりです。

if(tableView == self.usersPostOnTheWallTableView) {
    NSDictionary *propertyItems = [self.repliesItems objectAtIndex:indexPath.row];

    NSString *text = [self.postItems objectForKey:@"text"];

    NSLog(@"%@", text);

    CGSize constraintSize = CGSizeMake(280, MAXFLOAT);

    CGSize sizeText = [text sizeWithFont:[UIFont systemFontOfSize:FONT_SIZE] constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];

    self.height = MAX(sizeText.height, 44.0f);

    self.photosArray = [propertyItems objectForKey:@"attach_photos"];
    self.videosArray = [propertyItems objectForKey:@"attach_videos"];

    if((self.photosArray.count == 0) && (self.videosArray.count == 0)) {

        height += (CELL_CONTENT_MARGIN * 2);

    } else if ((self.videosArray.count > 0) && (self.photosArray.count == 0)) {

        height += 90 + (CELL_CONTENT_MARGIN * 2);

    } else if((self.photosArray.count > 0) && (self.videosArray.count == 0)) {

        height += 85 + (CELL_CONTENT_MARGIN * 2);
    }

}

ここで、テキストが非常に小さい場合は、行にうまく適合し、行のサイズが変更されます。このような:

ここに画像の説明を入力してください

しかし、テキストが大きくなった後、これは何が起こっているのか:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

明らかに、そこにスクロールする必要はなく、無効にします。ただし、ここで重要なのは、テキストのサイズを取り、ラベルのサイズを変更することです。ラベルの上部と下部からいくつのスペースを作成できるかを確認できます。しかし、実際のテキストはそこに配置されません。もう1つは、TableView自体のサイズを変更しなかったことです。サイズを変更しようとすると、下のテーブルと中央のテーブルが重なっています。

誰かがこれの解決策、またはおそらく別の実装方法を推奨できますか?

前もって感謝します!

4

1 に答える 1

1

これを行うには、tableviewDelegateメソッドを使用して、たとえば次のようにテキストに従ってセルの高さを設定します。

このメソッドは、すべてのセルに対して呼び出され、どのくらいのセルに高さを持たせるかを決定します

  - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
 {
    NSString *strDetails = [yourTextArray objectAtIndex:indexPath.row];
   //if(indexPath.row == 1)
   //{
     CGSize stringSize = [strDetails sizeWithFont:[UIFont fontWithName:@"Marker Felt" size:13] constrainedToSize:CGSizeMake(320, 9999) lineBreakMode:UILineBreakModeWordWrap]; // Provide text as well as font name in which your text will be displayed and constrainedToSize which defines width and height it should be maximum
     return stringSize.height+65; //Here 65 can be any value depending on Calculation  ImageView height + uppermost space + bottom space added
   //}
   //else 
   //{
   //  return 80 // anything u wishes
   //}
 }
于 2012-07-26T09:13:56.230 に答える