Ich möchte eine Komponente / Ansicht im Interface-Builder von Xcode von einer Übersicht in eine andere ziehen, ohne dass der Frame / die Position zurückgesetzt werden muss.
Das Standardverhalten von Xcode scheint dabei zu sein, die Ansicht, die vertikal und horizontal verschoben wird, in der neuen Übersicht zu zentrieren und dabei die Abmessungen beizubehalten. Dies ist äußerst frustrierend, da die Ansicht in der neuen Übersicht manuell neu positioniert werden muss. Aber ich hatte es richtig positioniert, bevor ich es verschoben habe, also möchte ich, dass Xcode sich nur an alle Attribute seines Rahmens erinnert, anstatt nur an seine Breite / Höhe. Ist das möglich?
ios
xcode
interface-builder
Aroth
quelle
quelle
Antworten:
Eine andere Lösung:
quelle
Ich habe etwas gefunden, das euch helfen könnte!
Die Aufgabe besteht darin, "untergeordnete Ansichten" in "übergeordnete Ansicht" zu gruppieren, sodass sie hierarchisch zu untergeordneten Ansichten der übergeordneten Ansicht werden und die angezeigten physischen Positionen wie vor der Aktion beibehalten.
Passen Sie zunächst die übergeordnete Ansicht an, um den Bereich der untergeordneten Ansichten physisch abzudecken. Stellen Sie zweitens sicher, dass alle Kinder in der Ansichtsliste darunter stehen.
Wählen Sie nun alle Kinder mit der Maus aus und bewegen Sie sie, z. B. ein Pixel nach oben und ein Pixel nach unten (um nur zu sagen, IB gibt es einige Änderungen). Nach dieser Freilassung werden Kinder und sie werden auf magische Weise Kinder der Eltern und behalten ihre Positionen auf dem Display.
Es funktioniert für mich unter OSX 10.8.2 und Xcode 4.6.
Viel Glück!
quelle
Ich habe viel Zeit beim Neupositionieren gespart und Folgendes getan:
Nicht sehr elegant, kann aber nicht verstehen, warum XCode es mit Shift oder so nicht unterstützt.
quelle
Wählen Sie alle Steuerelemente aus, die Sie von einem UIView zu einem anderen UiView (möglicherweise nicht untergeordnet) oder ScrollView verschieben möchten
Ausschneiden, kopieren
Nachdem Sie nun eine neue UIView / ScrollView in Ihre vorhandene UIView gezogen haben, klicken Sie nicht einmal, um sie auszuwählen. Klicken Sie stattdessen DOPPELT auf die neue UIView / ScrollView und fügen Sie alle Steuerelemente ein.
Der Abstandsunterschied bleibt bei allen Steuerelementen gleich, Sie müssen die Steuerelemente jedoch möglicherweise neu positionieren. Klicken Sie also nirgendwo hin, bis Sie diese neu positioniert haben. Positionieren Sie einfach alle Steuerelemente durch Navigationspfeile neu, da diese bereits ausgewählt sind, oder wählen Sie sie erneut aus.
HINWEIS: Ich bin auf XCode 4.2
quelle
Ich habe etwas Ähnliches wie Stepans Lösung gemacht, ohne ein Storyboard zu verwenden. In der IB, während die Ansicht des ViewControllers geöffnet ist:
quelle
Dies ist die beste Lösung, um Unteransichten in eine andere Ansicht zu kopieren und die Positionen beizubehalten:
In Schritt 6 wird die Einbettungsansicht entfernt, und Sie haben nur die Unteransichten kopiert.
quelle
Xcode Interface Builder führt zu Problemen beim Ziehen und Ablegen einer übergeordneten Ansicht in eine andere Ansicht (UIView, ScrollView, StackView).
F: Das
Einbetten einer Ansicht (die viele andere Unteransichten enthält) in eine ScrollView oder in eine andere Ansicht der obersten Ebene ist mit dem, was ich bisher gesehen habe, nicht einfach. Was bald danach passiert, ist, dass alle Unteransichten möglicherweise falsch platziert sind, weil sie ihren ursprünglichen Rahmen nicht finden konnten.
A:
Befolgen Sie die folgenden Schritte, um das Problem so einfach wie möglich zu lösen:
Nein, noch nicht fertig! Manchmal kann es vorkommen, dass es nur noch wenige Probleme im Zusammenhang mit der Benutzeroberfläche gibt. Sie müssen diese entsprechend beheben.
quelle
Ich habe einen anderen Ansatz entdeckt. Es ist im Grunde: Verschieben = Ausschneiden + Einfügen
So machen Sie:
Auf diese Weise tun Sie nicht:
Basis ist, dass jede Ansicht außer einer (root) in Storyboard ihre übergeordnete Ansicht hat . Wenn Sie mehrere Unteransichten kopieren / verschieben, verlieren Sie Frames und Einschränkungen .
Die Antwort ist ziemlich einfach. Sie erstellen eine Kopie Ihrer Unteransichten (SVs), indem Sie deren übergeordnete Ansicht (P) in die neue übergeordnete Ansicht (P ') kopieren. Auf diese Weise müssen Sie möglicherweise nur Einschränkungen von dieser übergeordneten neuen Ansicht (P ') zu ihrer neuen übergeordneten Ansicht neu erstellen, jedoch nicht für jede Unteransicht, die Sie verschieben möchten.
Nachdem Sie eine Kopie der übergeordneten Ansicht (P) in eine neue (P ') erstellt haben, haben Sie aus dieser neuen Ansicht (P') Folgendes:
Und aus der ursprünglichen übergeordneten Ansicht (P):
Vor:
Nach dem:
Ich sollte betonen, dass dies nicht gut verallgemeinert wird, wenn Sie zB UIScrollView als übergeordnete Ansicht haben. Dann wäre eine Kopie davon wieder eine UIScrollView, was möglicherweise nicht wünschenswert ist.
Eine andere Sache ist, wenn Sie einige der Unteransichten (SVs) in der ursprünglichen übergeordneten Ansicht (P) entfernen, müssen Sie möglicherweise einige Einschränkungen neu erstellen, wenn andere (nicht bewegliche Unteransichten) auf sie verweisen. Aber das solltest du trotzdem tun.
quelle
Was mir geholfen hat, dieses Problem zu lösen, war:
quelle