2012-04-11 4 views
0

Zum Beispiel in einer UIView, von links nach rechts gibt es drei Schaltflächen:, Button1, Button2, Button3. Wenn Taste 1 breiter wird, z. B. die Breite doppelt so groß ist wie die ursprüngliche Breite, gibt es eine Schnittstelle, die button2 & 3 automatisch nach rechts verschieben kann?iOS: Wie kann ich die Positionen von UI-Elementen nacheinander richtig einstellen, wenn einige von ihnen die Größe ändern können?

Entschuldigung, dass ich meine Frage nicht klar gemacht habe.

Ich meine solche Art von Größenänderung: Ich drücke Button1, dann ändere ich es Frame in meinem Code, nicht durch die Änderung des Textes in butotn1 verursacht. Ich möchte, dass button2 & 3 sich automatisch nach rechts bewegt, wobei die Breite der Lücke zwischen den Schaltflächen 1 und 2 unverändert bleibt.

Danke an alle.

+0

Welche Bedingungen werden Taste 1 breiter machen? Sprichst du von Rotation oder beziehst du dich auf die Verwendung von IB beim Entwerfen der App, anstatt sie zu starten? –

+0

Meinst du das, wenn du manchmal den Text auf deinen Knöpfen änderst, und sie die Größe an den Text anpassen, und das dein Layout bricht? Wenn dies der Fall ist, empfiehlt es sich, die Schaltflächen für den größtmöglichen Text breit genug zu gestalten. Wenn sie nicht alle auf diese Weise passen, überdenken Sie die Menge an Text auf Ihren Schaltflächen. – Dondragmer

+0

@MikeZ Tut mir leid, dass ich mich nicht selbst klar gemacht habe, jetzt habe ich meine Frage aktualisiert, ich meine, wenn ich das Programm ausführe und die Button-Seite im Code ändere. – CarmeloS

Antwort

0

Wenn sich Ihre Schaltflächen in einer Reihe am unteren Bildschirmrand befinden, sollten Sie eine UIToolBar verwenden. Seine UIBarButtonItem Objekte passen sich automatisch an die width Änderungen des anderen an. Für allgemeinere Fälle müssen Sie Positionen und Größen wie in der Antwort von Franklyn Weber neu berechnen.

+0

yep, UIToolBar sieht wie die einzige Lösung aus, vielen Dank! – CarmeloS

1

IB kann nur für die ursprüngliche Positionierung von Ansichten verwendet werden.

True, Sie können auch Autoresizing Masken der Ansichten definieren, aber das ist es.

Jede zusätzliche Anordnung sollte in Code erfolgen.

1

Ich könnte falsch liegen, aber ich weiß nicht, wie Sie dies in IB tun können. Im Code ist es ziemlich einfach, einfach die Buttons mit einigen IBOutlets verknüpfen und die Größe der Bilder der Buttons überprüfen (myUIImage.size), dann die Rahmen der Buttons anpassen (mach das in viewWillAppear).

Ihre Bearbeitung sehen - wenn Sie ihre Größe mit Code anpassen, passen Sie auch ihre Position an.

0

Ja - durch Verwendung von Autoresierungsmasken. Wenn Sie zulassen, dass die Ränder flexibel sind (keine roten Linien, die den Rahmen mit dem Rahmen der Superansicht verbinden) und flexible Breite und Höhe zulassen, werden die Schaltflächen proportional skaliert und verschoben.

+0

Ich muss das überprüfen - immer bereit, etwas Neues zu lernen! Vielen Dank. – SomaMan

+0

Autosizing-Masken bewirken, dass die Ansicht auf Änderungen in ihrer Superview reagiert, löst jedoch nicht das Problem des OP, sich als Reaktion auf andere Ansichten auf derselben Ebene in der Ansichtshierarchie zu bewegen. – Dondragmer

+0

Es scheint, OP hat ihre Frage geändert, nachdem ich geantwortet habe. – Alex

Verwandte Themen