0

サイズ変更に問題があります。フレームと境界について十分に理解していないためだと思います。

ウィンドウを埋めるスクロールビュー内にカスタムビューがあります。ウィンドウのサイズを変更すると、マウスがドラッグしている場所でウィンドウによってゆっくりとカバー/カバーされないように、カスタムビューをそのままにしておきます。

実際に起こることは、カスタム ビューがスクロール ビューの左下隅に固定されたままになるため、ウィンドウを短くすると、カスタム ビューが上にスライドして、左下隅がスクロール ビュー コーナーに触れたままになります。

特定のビューを移動せずにウィンドウのサイズを変更するにはどうすればよいですか?

4

2 に答える 2

1

これframeは、ビューがその親内で占める領域です。はbounds、フレーム内に描画されるビューのセクションです。したがって、2つがまったく異なる99.99%の場合、それらは同じsizeですが、境界の原点はゼロであり、フレームの原点はゼロではありません。

とはいえ、座標系について混乱しているように聞こえます。OS Xは、画面の左下の端にある原点のグラフ用紙の規則に従います。したがって、スクロールビューの原点はウィンドウの左下にあり、サイズを変更するとそのポイントがアンカーになります。スクロールビューのフレームと境界のサイズは変更されますが、原点は変更されません。

左下(?)ではなく左上を固定したい場合、おそらく最も簡単な方法は、サブクラスNSScrollView化してオーバーライド- setFrame:し、適切な演算を実行することです。現在を取得し、documentVisibleRect左上にあるものを計算し、super設定を許可します。次に、新しいフレームがscrollToPoint適切に呼び出されます。

于 2012-09-25T05:47:53.377 に答える
1

If you want to pin your document view to the top left, you can override isFlipped in your document view to return YES. In that case the y coordinate will be flipped and you may need to perform some computation adjustments.

- (BOOL)isFlipped
{
    return YES;
}
于 2012-10-21T22:26:26.427 に答える