0

上部にテーブルビューがあり、テーブルビューの下にスクロールビューがあるビューがあります。サイズ変更バーボタン項目を押すと、テーブルビューを非表示にして、スクロールビューを最大化します。スクロールビューとテーブルビューを正しくアニメーション化できましたUITextViewが、余分な画面スペースを利用するために、スクロールビューの内側のサイズを変更しようとしています。

サイズ変更を計算するたびにUITextView、画面の左上隅に移動しますが、その理由はわかりません。XとYを変更するのではなく、高さだけを変更します。

CGRect newDesFrame = descriptionTextView.bounds;
newDesFrame.size.height = newDesFrame.size.height + tableViewFrame.size.height;
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:.5];

self.scrollView.frame = scrollFrame;
self.descriptionTextView.frame = newDesFrame;

[UIView commitAnimations];

なぜこれが起こるのかわかりません。中にあるdescriptionTextView.boundsのでめちゃくちゃになりませんか?スクロールビューのXとYのNSLogを実行すると、0,0のように見えました。スーパービューでもビューでも0,0になっていないので、奇妙です。これを修正するにはどうすればよいですか?UIViewUIScrollView

4

2 に答える 2

1

これは、self.descriptionTextView.frame = newDesFrame(フレームではなくBoundsプロパティです!!違いについて読むにはリンク)を実行しているために発生します。

解決:

self.descriptionTextView.bounds = newDesFrame

于 2012-12-07T20:18:48.050 に答える
1

descriptionTextViewは、実際には原点(xとy)を変更しているため、左上にジャンプしている可能性があります。あなたは以下から始めています:

CGRect newDesFrame = descriptionTextView.bounds;

そのテキストビューの境界を取得すると、原点が0,0のCGRectが得られます。これは、「境界」が独自のローカル座標空間にあるビューの長方形を提供するためです。

代わりにこれを試してください:

CGRect newDesFrame = descriptionTextView.frame;

これにより、実際の原点を含む、スーパービューの座標空間にビューの長方形が表示されます。

于 2012-12-07T20:20:10.143 に答える