Ich habe das folgende Problem in meiner iPhone App.
Ich habe 4 Knöpfe in meinem IB auch mit meinem UIViewController
verbunden ( IBOutlet
)
Wenn ich zum Beispiel den zweiten Button, der AfvalSoorten ist, mit [self.btnAfvalSoorten setHidden:YES];
verberge, verschwindet er, das ist was ich will, aber ich habe immer noch den Button Space, wenn ich die App im Simulator debugge.
Wie kann ich das loswerden? Unten ist ein Beispiel.
Gibt es eine Option im Storyboard für die Schaltflächen? zusammenschneiden?
Sie sollten das automatische Layout verwenden. Ansonsten ist es ein Albtraum mit den neuen Bildschirmgrößen.
Mit dem automatischen Layout können Sie programmatisch das tun, was Sie fragen: Richten Sie die Schaltflächen mit bestimmten Einschränkungen ein und entfernen Sie dann die Einschränkungen, die nicht benötigt werden, wenn Sie sich entscheiden, die Schaltfläche auszublenden. Es ist flexibel und leistungsstark, aber nicht der einfachste Weg für einen Anfänger.
Ein einfacher Weg, dies zu tun, ist mit zusätzlichen Einschränkungen. Wenn Sie beispielsweise die Schaltflächen 1, 2 und 3 haben (siehe Screenshot) und Sie die Schaltfläche 2 entfernen möchten, können Sie eine zusätzliche Einschränkung zwischen 3 und 1 hinzufügen:
Diese Einschränkung sollte weniger Priorität haben (250 in meinem Beispiel) als die anderen (standardmäßig 1000). Das bedeutet, dass die Einschränkung nicht angewendet wird, wenn Button 2 vorhanden ist (mit Einschränkungen höherer Priorität).
Entfernen Sie dann die Schaltfläche, anstatt sie zu verbergen.
%Vor% Wenn Sie die Schaltfläche ausblenden, wird das Layoutsystem immer noch Entscheidungen treffen und das Layout wird komplexer. Wenn Sie die Schaltfläche beibehalten möchten, stellen Sie sicher, dass sie strong
modifier in der Eigenschaftsdeklaration verwendet.
Besserer Ansatz für das obige Szenario - Sie müssen kein automatisches Layout oder Frames festlegen:)
Verwenden Sie UITableView
und erstellen Sie eine benutzerdefinierte Zelle mit UIButtons
darin.
Setzen Sie UITableViewCellSelectionStyle
auf None
Hier ist der Hintergrund Ihrer Schaltfläche für alle Zellen gleich
Erstellen Sie ein Array mit den obigen Schaltflächentiteln
Wenn Sie Schaltflächen ausblenden möchten, entfernen Sie sie einfach aus dem Array.
Der moderne bevorzugte Weg ist die Verwendung von Stack Views. Tolles Tutorial . Benötigt iOS 9.
Sie finden das Symbol der Stapelansicht in der Auto Layout-Symbolleiste unten rechts im Storyboard-Zeichenbereich.
Du hast es nur versteckt. Sie müssen die Rahmen nach Ihren Bedürfnissen einstellen. ODER Sie können das automatische Layout festlegen.
vielleicht gibt es eine Lösung mit AutoLayout in IB, aber ich bin mir nicht sicher. Programmatisch können Sie alle Ihre Schaltfläche zu einem Array in der Reihenfolge hinzufügen. und immer wenn Sie eine Schaltfläche ausblenden oder nicht, durchlaufen Sie die Anordnung der Schaltflächen und jedes Mal, wenn Sie eine nicht verborgene finden, setzen Sie die y-Koordinate auf dem Rahmen auf einen Wert und Sie erhöhen diesen Wert um was Sie brauchen, damit die nächste nicht ausgeblendet wird wird entsprechend der zuletzt verwendeten Position platziert.
Tags und Links objective-c ios xcode autolayout