10

UITableviewカスタムで作成しましたUITableViewCellUITableViewCell含まれてUILabelsおり、セルの高さに基づいて各セルの高さを計算しました。しかし、テーブルビューの高さを取得するにはどうすればよいですか?テーブルビューの高さに基づいて、作成したスクロールビューの高さを計算する必要があるためUITableViewボタンをクリックすると、次のようになります。

-(IBAction)btnClicked:(id)sender
{
    self.tableView=[[UITableView alloc] initWithFrame:CGRectMake(0,150,327,[arr5 count]*205) style:UITableViewStylePlain];
    self.tableView.delegate=self;
    self.tableView.dataSource=self;
    self.tableView.scrollEnabled = NO;
    [self.view addSubview:self.tableView];
    float fscrview = 150 + self.tableView.frame.size.height + 20;
    testscroll.contentSize=CGSizeMake(320, fscrview);
  }
 - (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath
  {
  NSString *city1 = city.text;
        UIFont *font = [UIFont fontWithName:@"Helvetica" size:14.0];
        CGSize constraintSize = CGSizeMake(280.0f, MAXFLOAT);
        CGSize bounds = [city1 sizeWithFont:font constrainedToSize:constraintSize lineBreakMode:UILineBreakModeWordWrap];
//similarly calculated for all 
   return (CGFloat) cell.bounds.size.height + bounds.height+bounds1.height+bounds2.height+bounds3.height+bounds4.height+bounds5.height;
  }

これでtableViewCellsの高さを取得できます。この後、tableView全体の高さを計算/設定するにはどうすればよいですか?

そして、tableViewの行/高さに基づいてScrollViewの高さを計算する方法は?

4

5 に答える 5

13

contentSize.heightのプロパティを使用しますUITableView

テーブルビュー全体をコンテンツサイズで設定してから、スクロールビューサイズに関連するコンテンツを設定しUITableViewます。このために以下のコードを使用します...

データを追加した後、または以下のコードを設定reloadDataするだけです。UITableView

    yourTableView.frame = CGRectMake(yourTableView.frame.origin.x,yourTableView.frame.origin.y, yourTableView.frame.size.width, yourTableView.contentSize.height);

    float ftbl = yourTableView.frame.origin.y + yourTableView.contentSize.height + 15;
    yourScrollView.contentSize=CGSizeMake(320, ftbl);

アップデート:

self.tableView=[[UITableView alloc] initWithFrame:CGRectMake(0,150,327,[arr5 count]*205)style:UITableViewStylePlain]; 
self.tableView.delegate=self; 
self.tableView.dataSource=self;

[testscroll addSubview:self.tableView]; /// add this tableview in scrollview not in self.view
[self.tableView reloadData];
self.tableView.frame = CGRectMake(self.tableView.frame.origin.x, self.tableView.frame.origin.y, self.tableView.frame.size.width, self.tableView.contentSize.height);
float ftbl = self.tableView.frame.origin.y + self.tableView.contentSize.height + 15; 
testscroll.contentSize=CGSizeMake(320, ftbl); 
于 2013-01-02T10:02:52.187 に答える
4

UITableView の高さを取得する最も簡単な方法

- (CGFloat)tableViewHeight

{
   [tblData layoutIfNeeded];

   return [YOUR_TABLE_NAME contentSize].height;
}
于 2013-01-02T11:20:09.340 に答える
3

iOS 8+では、これはテーブルビューの高さを取得するために機能しました

CGFloat tableViewHeight = tableView.bounds.size.height;
于 2016-03-31T18:22:09.713 に答える
2

これを試してください:動作するtableView.backgroundView.bounds.size.heightはずです

論理:

  • UITableViewbackgroundView「テーブル ビューの背景ビューは、テーブル ビューのサイズに合わせて自動的にサイズ変更されます」というプロパティがあります。
  • backgroundViewは、「ビューのサイズと位置を定義する」UIViewというプロパティboundsを持つ です。CGRect
  • CGRectsizeプロパティを持っている、プロパティをsize持っていheightます

QED

于 2013-01-02T10:04:50.643 に答える