私がやりたいのは、フレーム/位置をリセットせずに、Xcodeのインターフェイスビルダーであるスーパービューから別のスーパービューにコンポーネント/ビューをドラッグすることです。
これを行うときのXcodeのデフォルトの動作は、寸法を保持しながら、新しいスーパービューで垂直および水平に移動されるビューを中央に配置するように見えます。これは、ビューを新しいスーパービューで手動で再配置する必要があるため、非常にイライラします。しかし、移動する前に正しく配置していたので、Xcodeに幅/高さだけでなく、フレームのすべての属性のみを記憶させたいと思います。これは可能ですか?
別の解決策:
私はあなたたちを助けるかもしれない何かを見つけました!
タスクは、「子ビュー」を「親ビュー」に再グループ化して、それらが階層的に親ビューの子になり、アクション前のようにディスプレイ上の物理的な位置を保持することです。
まず、親ビューを調整して、子ビューの領域を物理的にカバーします。次に、ビューリストですべての子がそれより下にあることを確認します。
次に、すべての子をマウスで選択して移動します。上に1ピクセル、下に1ピクセル(IBに変更があると言うだけです)。その後、子供を解放すると、彼らは魔法のように親の子供になり、その位置を表示し続けます。
OSX 10.8.2およびXcode 4.6で動作します。
がんばろう!
私はなんとかしてものの再配置に費やす時間を節約し、これを行いました:
それほどエレガントではありませんが、なぜXCodeがShiftなどでサポートしていないのかわかりません。
あるUIViewから別のUiView(nay be child)またはScrollViewに移動するすべてのコントロールを選択します。
切り取り/コピー
新しいUIView/ScrollViewを既存のUIViewにドラッグした後、一度クリックして選択するのではなく、新しいUIView/ScrollViewをダブルクリックしてすべてのコントロールを貼り付けます。
距離の差はすべてのコントロール間で同じままですが、コントロールを再度配置する必要がある場合があります。そのため、それらの位置を変更するまでクリックしないでください。すべてのコントロールは既に選択されているため、ナビゲーション矢印ですべての位置を変更するか、再度選択することができます。
注:XCode 4.2を使用しています
ストーリーボードを使用せずに、Stepanのソリューションに似た何かをしました。 ViewControllerのビューが開いている間にIBで:
Q:
ビュー(その中に他の多くのサブビューを含む)をScrollViewまたは別のトップレベルビューに埋め込むのは、これまで見たものとは簡単ではありません。すぐに起こるのは、元のフレームが見つからなかったために、すべてのサブビューが置き忘れられているように見えることです。
A:
次の手順を実行すると、できるだけ簡単に解決できるようになります。
いいえ、まだ終了していません!UI Constraintに関連する問題がさらに少ないことを経験する場合がありますが、それに応じて解決する必要があります。
これは、サブビューを別のビューにコピーし、位置を保持するための最良のソリューションです。
手順6では、埋め込みビューが削除され、サブビューのみがコピーされます。
別のアプローチを見つけました。基本的には:Move = Cut + Paste
このようにして:
このようにしない:
基本は、ストーリーボードの1つ(ルート)以外の各ビュー親ビューがあるです。次に、複数のサブビューをコピー/移動すると、フレームと制約を失いますになります。
答えは非常に簡単です。親ビュー(P)を新しい親ビュー(P ')にコピーして、サブビュー(SV)のコピーを作成します。この方法では、親の新しいビュー(P ')からその新しい親ビューへの制約のみを再作成する必要がありますが、移動するすべてのサブビューについては再作成する必要はありません。
親ビュー(P)を新しいビュー(P ')にコピーした後、その新しいビュー(P')から以下を実行します。
元の親ビュー(P)から:
前:
View1
View2
P
移動したいSV
移動したくないSV
View3
後:
View1
View2
P
移動したくないSV
View3
P '
移動したいSV
あなたが持っている場合、これはうまく一般化しないことを強調する必要があります親ビューとしてのUIScrollView。そして、そのコピーは再びUIScrollViewになりますが、これは望ましくない場合があります。
別のことは、元の親ビュー(P)でサブビュー(SV)の一部を削除するとき、他の(移動できないサブビュー)がそれらを参照している場合、いくつかの制約を再作成する必要がある場合があります。しかし、とにかくそれを行う必要があります。