3

私は UIScrollView を持っています。これは縦向きのアスペクトで始まり、その後 (デバイスの回転後) 横向きの別のフレームに移動します。

したがって、コンテンツ ビュー (UIScrollView 内の UIView) が更新され、UIScrollview の contentSize を設定します。

問題は、回転後、UIScrollView には新しいフレーム、新しいコンテンツ、新しい contentSize がありますが、ユーザーがスワイプできる領域は元のフレーム/コンテンツのように動作します。

画像 1 は元のアスペクトを示しています。画像 2 は、ユーザーがスワイプ ジェスチャに使用できる奇妙な領域を備えた新しいアスペクトを示しています。

スクロールビューの本来の姿 新しい側面

ご想像のとおり、境界などのスクロール ビューのかなりの数の設定をいじりましたが、現在のところ、この動作を「修正」したものはありません。

この動作が発生している理由や、スクロール ビューのフレーム/境界にユーザー インタラクション エリアを設定する方法についての洞察をいただければ幸いです。

EDIT2:

この階層には 3 つのビューがあります
Lanscape
mainView フレーム {0,0,1024,748}
resultsView フレーム {633,90,361,677}
scrollView フレーム {20,60,340,595}


型 mainView フレーム {0,0,532,1240} <--- おっとホーシー - 期待していた .... {0,0,768,1004}
resultsView フレーム {0,659,768,345}
scrollView フレーム {0,70,768,280}

この時点で、私はプロジェクトのすべてのペン先に行き、自動サイズ変更がオフになっていることを確認し、すべてのビューに異なる番号を付けてタグ付けしたので、フレームをチェックしていたときに、自分が何であるかを明確に確認できるようになりました見つめている。

スタックの最上位ビューは自動サイズ変更されていましたが、現在はそれをオフにして、縦向きの結果を取得しています..

mainView フレーム {0,0,768,1004} ..... はい! WIN.....
resultsView フレーム {0,659,768,345}
scrollView フレーム {0,70,768,280}

EDIT1:

以下のコメントとしてサイズ変更マスクを設定すると、スクロールビューの表示サイズがインタラクション領域に一致するように縮小されます。つまり、スクロールビューが実際にフレームだと思っているように見えるのは、そのサイズのみです (768 は 468 程度に見えるように作られています)。フレームの幅を大きくすると、実際にスクロール ビューのサイズが大きくなりますが、全幅が768 ピクセルしかないのに、幅が 768 のフレームが 468 のように見え、686 のフレームが 568 のように見えるのはなぜですか?!

4

2 に答える 2

4

スクロール ビューのスーパービューのサイズが正しく変更されていないようです。[myScrollView superview] をログに記録し、そのビューが期待どおりにサイズ変更されているかどうかを確認することで、これを確認できます。

スーパービューのサイズが変更されていない場合、タッチダウンがスクロールビューに渡されないため、表示されている動作が説明されます。(これは、自動サイズ変更マスクを設定したときにサイズが変更される理由も説明しています。)

于 2011-12-03T15:47:43.120 に答える
2

オブジェクトで次のメソッドを使用してみましたか?

[_yourView setAutoresizingMask:(UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight)];
于 2011-12-01T16:17:20.503 に答える