Xcode 11 Neue Einschränkungen hinzufügen Null setzen: Set-Wert anstelle von Standard / Standard verwenden

74

Ich habe Autolayout verwendet, um neue Einschränkungen hinzuzufügen, um einfache Einschränkungen für die Übersicht / relative Ansicht wie diese festzulegen (für eine lange Zeit):

Geben Sie hier die Bildbeschreibung ein

Kürzlich, nachdem ich auf den neuesten xcode (11.3.3 oder nur 11.3 / 11C29) aktualisiert wurde, habe ich dieses seltsame Problem: Wenn ich die Konstante = 0 setze, erzeugen sie die Einschränkungen immer auf unerwünschte Weise wie folgt:

Geben Sie hier die Bildbeschreibung ein

Und es scheint, dass der Standardwert irgendwie 20 ist und meine Ansicht so falsch aussieht (0 im Vergleich zu 20?)

Wenn ich das behebe, indem ich die Einschränkung wie folgt bearbeite:

Geben Sie hier die Bildbeschreibung ein

Dann wird es wieder korrigiert (das Bild ist nach dem Bearbeiten der Einschränkungen, vor dem Bearbeiten zeigt es Konstante = Standard)

Ich weiß nicht einmal, wie ich das Problem beschreiben soll, aber wie behebe ich dieses neue Problem, add new constraintum meinen Wunschpunkt anstelle von Standard / Standard zu verwenden?

Aktualisieren:

Es scheint nur passiert zu sein, wenn die Übersicht eingeschränkt ist. Keine Ahnung, wie man das behebt.

Update 01.04.2020:

Xcode11.4 hat dies behoben.

Eddie
quelle
2
Selbes Problem hier. Ich denke, dies erschien zum ersten Mal, als ich auf 11.3 UPD aktualisiert habe: Das gleiche Projekt hat dieses Problem nicht auf einem anderen Computer mit der gleichen Version von xcode. Vielleicht hängt es mit der IDE-Konfiguration zusammen, oder vielleicht ist es ein Fehler der IDE selbst.
Dmitrij Rogov
1
Gleiches Problem hier. Verwenden von Xcode 11.3 (11C29).
user525504
1
Gleiche Ausgabe Version 11.3 (11C29)
user832
1
@DmitrijRogov Ich habe mich manchmal daran erinnert (xcode 8,9 oder 10), dass es irgendwo eine Einstellung gibt, die uns hilft, den standardWert zu definieren (damit wir 10 oder 0 anstelle von setzen können default = 8), aber ich habe vergessen, wo er jetzt ist. Oder haben sie die Funktion entfernt?
Eddie
5
Das macht mich verrückt
Buyin Brian

Antworten:

37

Scheint wie ein Fehler (vergessen Sie nicht, bei Apple zu archivieren). Hier ist eine einfache Problemumgehung:

Wenn Sie in der Zahl in dem „popover“, statt Tippen füllen 0, geben 0.01. Dies verhindert, dass sich die Nummer auf mysteriöse Weise in "Standard" ändert. Okay, es 0.01ist nicht dasselbe wie, 0aber es ist nah genug, dass Sie den Unterschied nicht erkennen können, und zumindest müssen Sie nicht zurückgehen und ihn später ändern.

BEARBEITEN Apple sagt, dass dieser Fehler in Xcode 11.4 behoben wird:

Es wurde ein Fehler behoben, der die Eingabe einer 0-Konstante in den Popup-Editoren für Einschränkungen verhinderte. (54076090)

matt
quelle
1
Gute Arbeit, danke!
Eddie
1
Großartig! Was für ein Problem dieses Problem sein kann ..
Joaquin Pereira
Es funktioniert gut, wenn ich 0,01 anstelle von 0
Teja verwende
Aber das zweite Mal auf 0 zu setzen, funktioniert. Warum sich mit 0,01 beschäftigen? Es ist sowieso ziemlich nervig. Gut, dass es ein Fehler ist und kein "Feature".
Vlad Rusu
11

Während @matt Workaround funktioniert, möchte ich nur hinzufügen, dass Sie es auf 0,01 setzen und dann auf 0 ändern können, es wird nicht wieder auf den Standardwert geändert. Hinweis: Xcode 11.3

Chhay Sotheara
quelle
Wenn ich es wieder auf 0 ändere, wechselt es für mich wieder zu "Standard". Xcode 11.3.1.
John Scalo
10

Ab Xcode 11.3.1:

Die sauberste und schnellste Lösung, die ich gefunden habe, lautet wie folgt:

Geben Sie einfach -0in das Einschränkungsfeld ein. Xcode scheint das Negativ zu verwerfen und verhält sich korrekt, was besser ist als das Lesen0.01 für alles.

Sie können alle Einschränkungen gleichzeitig einfügen, ohne dass Sie jeweils eine ausführen oder später bearbeiten müssen.

Xcode zeigt die Werte wie folgt an

Es scheint wirklich dummes Verhalten zu sein. Gibt es einen Grund, warum Apple dies absichtlich veranlasst hat ...?

Bearbeiten: Dies scheint nicht jedes Mal zu funktionieren , was frustrierend ist. Ich hatte gerade eine UIImageView-Show 0 für Superview, aber visuell immer noch den Standardwert (20). Dies scheint wirklich ein Fehler mit dem IB zu sein, da das Verhalten völlig unlogisch ist.

Dave Y.
quelle
9

Dieses Verhalten scheint auf Xcode 11.4 festgelegt werden: Release Notes

Es wurde ein Fehler behoben, der die Eingabe einer 0-Konstante in den Popup-Editoren für Einschränkungen verhinderte. (54076090)


Ursprüngliche Antwort:

Ich habe gerade auch dieses Verhalten festgestellt. Ich habe versucht, die Einschränkungen 1 zu 1 hinzuzufügen, und Xcode hat den Wert 0 tatsächlich eingehalten.

Meine zwei Cent.

dequin
quelle
Ja, ich habe gerade bemerkt, dass es auch in den Versionshinweisen gut gemacht ist.
Matt
5

Ich weiß, dass dies keine Lösung ist, aber für eine vorübergehende Lösung, die verhindert, dass Sie alle Einschränkungen durchlaufen, habe ich gerade herausgefunden, dass Sie das gewünschte Verhalten erhalten, wenn Sie '-0' anstelle von '0' einfügen, aber Sie müssen eine einfügen Einschränkung jedes Mal.

Gonçalo Gaspar
quelle
Dies ist eigentlich eine gute Option. Wenn Sie beim Erstellen der Einschränkungen eine '-0' hinzufügen, wird im Inspektor '0'
angezeigt. Sie
1

In der Zwischenzeit gibt es keine Möglichkeit, dieses Problem zu lösen

Die beste vorübergehende Lösung besteht jedoch darin, die Einschränkungen nacheinander mit Null zu addieren.

Ahmed Samir
quelle
0

ignoriere das wenn standard.

Klicken Sie nach dem Hinzufügen auf Einschränkung (blaue Linie) und Inspektor, um das Attribut einzuschränken und auf 0 zu setzen.

diese Arbeit für mich

Jirakit Paitoonnaramit
quelle
0

Dieser Fehler tritt immer noch auf (Xcode 11.3.1). Es wurde behoben, indem einfach die Einschränkungen als "Standard" hinzugefügt wurden, dann auf die blauen Einschränkungslinien geklickt und die "Konstante" unter "Größeninspektor" auf 0 gesetzt wurde.

Jaskirat Singh
quelle