1

グループがあり、そのグループとその中のすべてのオブジェクトのサイズを再帰的lockLocation trueに変更する必要がある状況があります。

問題 A. または問題 B のいずれかを抱えています。

A.グループの rect をその子の前に設定すると、子が移動するため、計算された新しい rect の基礎としてそれらの rect を使用できなくなります。

B. _ 最初に子の四角形を設定すると、親グループの四角形を設定すると、子が間違った位置に移動します。

可能な解決策 私が考えることができる唯一のことは、オフセットを計算して子オブジェクトの rect から減算し、それを再帰ハンドラに渡すことです。

4

5 に答える 5

0

小さな iOS スクリーンスワップ パレットを作成したときに行ったことは、最初にグループ内のすべてのオブジェクトをスケーリングし、次にグループ内のコントロールのすべての位置をバッファリングすることでした。

 repeat with i = 1 to the number of controls of pObject
    put the loc of control i of pObject into tArr[i]
 end repeat

次に、グループをスケーリングし、最後にすべてのコントロールをリセットします。

if tArr is an array then
  repeat with i = 1 to the number of elements in tArr
     set the loc of control i of pObject to tArr[i]
  end repeat
end if
于 2013-04-23T12:53:36.487 に答える
0

子オブジェクトのサイズを変更する前に、グループの boundingRect を true に設定してから、boundingRect を無効にする前に、グループの rect を完全な範囲に設定してみてください。

于 2013-04-23T16:55:00.767 に答える
0

オブジェクトの元の位置と四角形を使用して新しい位置とオブジェクトを決定すると、丸めエラーが発生し、最終的にすべてがうまくいかなくなります。これが、Geometry Manager がまったく信頼できない理由の 1 つです。したがって、私はあなたの解決策に反対することを強くお勧めします、モンテ。

代わりに、すべてのオブジェクトの四角形をグループの四角形に対して相対的に設定します。たとえば、常に 16 ピクセルのマージンを設定します。おそらく、このソリューションは一般的なアプローチを許可していません。そのため、私は常に、コントロールと直接やり取りする独自のスクリプトを作成しています。

put the rect of grp 1 into myRect
add 16 to item 1 of myRect
add 16 to item 2 of myRect
subtract 16 from item 3 of myRect
subtract 16 from item 4 of myRecy
set the rect of fld 1 to myRect
-- etc
于 2013-04-24T08:35:25.910 に答える