私は自分のタブレビューセルの高さを個別に計算しています。
これはスクロールするとうまく機能しますが、テーブルが表示されると正しく表示されないことがあります。
次に、上下にスクロールすると、正しく見えます。
したがって、プログラムでテーブルをスクロールする必要があります。
問題は、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);
}
スクロール後、高さはまったく同じ値に計算され、最終的にフレームはここで割り当てられた高さになります。