Xcode IB: UIButton ist ausgeblendet, hat aber immer noch Platz

7

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?

    
Stefan van de Laarschot 10.10.2014, 12:00
quelle

6 Antworten

15

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.

    
djromero 10.10.2014, 12:37
quelle
2

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.

  1. Setzen Sie UITableViewCellSelectionStyle auf None

  2. Hier ist der Hintergrund Ihrer Schaltfläche für alle Zellen gleich

  3. Erstellen Sie ein Array mit den obigen Schaltflächentiteln

  4. Wenn Sie Schaltflächen ausblenden möchten, entfernen Sie sie einfach aus dem Array.

Kampai 10.10.2014 12:14
quelle
2

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.

    
Alexander Bekert 30.03.2016 07:24
quelle
0

Du hast es nur versteckt. Sie müssen die Rahmen nach Ihren Bedürfnissen einstellen. ODER Sie können das automatische Layout festlegen.

    
iDeveloper 10.10.2014 12:05
quelle
0

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.

    
Nicolas Manzini 10.10.2014 12:08
quelle
0
  1. Sie können die Schaltflächen programmgesteuert hinzufügen - & gt; Du wirst das Array haben von Btns und Methode zum Hinzufügen von Array zum View-Controller.
  2. Sie können mit den Constraints spielen und die Height Constraint für die zweite Schaltfläche festlegen, wenn Sie sie auf 0 ausblenden, aber in diesem Fall sollten alle Schaltflächen mit den Constraints verbunden sein.
kabarga 10.10.2014 12:08
quelle

Tags und Links