0

私は自分のタブレビューセルの高さを個別に計算しています。

これはスクロールするとうまく機能しますが、テーブルが表示されると正しく表示されないことがあります。

次に、上下にスクロールすると、正しく見えます。

したがって、プログラムでテーブルをスクロールする必要があります。

問題は、3行しかない場合があるため、プログラムでスクロールできないことですが、セルがなくても手動でビューを「スクロール」できます。この場合、テーブルセルの高さの計算を修正するため、プログラムでビューを「スクロール」する必要があります。

したがって、このコードは機能しません。

NSIndexPath *indexPath = [NSIndexPath indexPathForRow:10 inSection:0];
[self.theTable scrollToRowAtIndexPath:indexPath
                      atScrollPosition:UITableViewScrollPositionTop
                              animated:YES];

問題は、プログラムでビューをスクロールするにはどうすればよいですか?

*編集* 計算された高さを確認しましたが、それらはすべて正しいです-スクロールした後でも、最初に表示されたときとまったく同じに計算されます。

そのため、フレームに赤い背景を付けて、ビューが表示された直後の表示とスクロール後の表示の違いを確認しました。

実際、viewDidAppear の後のすべてのフレームは同じ (間違った) 高さであり、次のように設定されている高さではありません。

-(void) layoutSubviews {
[super layoutSubviews];

//                              x     y   width height
float h = expectedLabelSize.height;
[imageView setFrame:CGRectMake(    8.0, 10.0,  20.0, 20.0)];
[t1 setFrame:CGRectMake(          40.0,  4.0, 280.0, h)]; //total width 320
[t1 setBackgroundColor:[UIColor redColor]];
[t2 setFrame: CGRectMake(        235.0, h+4, 85.0, 15.0)];
NSLog(@"-layoutSubviews--> h:%f w:%f",h,expectedLabelSize.width);

}

スクロール後、高さはまったく同じ値に計算され、最終的にフレームはここで割り当てられた高さになります。

4

2 に答える 2

1

viewWillAppear

[self.tableView beginUpdates];
[self.tableView endUpdates];
于 2013-03-29T21:17:31.673 に答える
0

UITextView のコンテンツに合わせてセルのサイズを動的に変更する際に、まったく同じ問題がありました。最終的に、無料の Sensible TableView フレームワークを使用することになりました。これは、とりわけ、すべてのセルの高さを自動的に計算します。

于 2013-03-29T22:43:48.643 に答える