it-swarm.com.de

Xcode 9 - "Feste Breitenbeschränkungen können Clipping verursachen" und andere Lokalisierungswarnungen

Ich habe den neuen Xcode heruntergeladen und in Interface Builder habe ich eine Menge Probleme mit Warnungen, die Folgendes sagen:

Feste Breitenbeschränkungen können zu Beschneidungen führen

Es sieht aus wie das:

 enter image description here

Ich habe Lokalisierung für mehrere Sprachen und verstehe die Warnung, dass sich in einer anderen Sprache die Größe eines Labels ändern kann, aber meine App hat dieses Problem nicht. Ich habe es gestern in Xcode 8 getestet und getestet, es war in Ordnung. Ich möchte nicht Stunden und Stunden damit verbringen, sinnlose neue Einschränkungen hinzuzufügen. 

Irgendwelche Lösungsvorschläge?

112
Dave G

Ich erhielt die gleichen Warnungen, sogar ohne mehrere Sprachen in meiner App, was mich veranlasste, herauszufinden, was wirklich vor sich ging. . .

Hier gibt es ein paar verschiedene Dinge. Ich war in der Lage, Stummschaltung der Warnungen mit fester Breite in meiner eigenen App durch Ändern der Breite der Objektabstände von fester Breite in größer oder gleich oder weniger als oder gleich.

Dazu können Sie das Objekt im Interface Builder auswählen, zum Größeninspektor wechseln und dort ändern:

 enter image description here


Oder wählen Sie die Einschränkung aus der Dokumentgliederung aus, wechseln Sie zum Größeninspektor und ändern Sie ihn dort:

 enter image description here



Soweit die Warnung oben auf Ihrem Screenshot:

Behobene vordere und nachfolgende Abhängigkeiten mit einer mittleren Einschränkung können Zu Clipping führen

Hier ist ein Screenshot von meiner eigenen App, in dem ich genau dieselbe Warnung erhalten habe:

 enter image description here

Ich hatte das Label mit dem @ -Zeichen auf die Schaltflächen als Vorlauf und Nachlauf gesetzt, aber auch, um die Mitte auf das Bewertungsetikett auszurichten. Sobald ich entfernte die Beschränkung für die zentrierte Ausrichtung, verschwand die Warnung, aber ich hatte einen nicht ordnungsgemäß ausgelegten Satz von Objekten.

Dann habe ich mich mit umarmen der Stack-Ansicht abgefunden. So ärgerlich es auch ist, wenn Sie alle Einschränkungen und Einstellungen richtig vorgenommen haben, wird es schön und ohne Warnungen angezeigt.


Bearbeiten

Wenn Repose in die Kommentare schreibt, ist es manchmal das, was Sie brauchen, um einfach> = 0 hinzuzufügen, da Sie sicherstellen, dass sich zwei Elemente nicht überlappen.

137
Shades

Sie können versuchen, "Respect Language Direction" für jede Einschränkung zu deaktivieren, um die Warnung auszuschalten und zu sehen, ob sie hilft. Wählen Sie Ihre Einschränkung aus und öffnen Sie den Inspektor Attribute/Größe. Bitte sehen Sie das Bild im Anhang.

p.s. Diese Lösung funktioniert für iOS. Für macOS versuchen Sie, die Warnung durch Drücken von> = oder <= zu unterdrücken.

 Disrespect Language Direction

53
Repose

Für lokalisierte Beschriftungen und Schaltflächen ist diese Warnung sinnvoll, und Sie sollten die erforderlichen Einschränkungen angeben, damit sich Ihre Beschriftungen nicht überlappen. Wenn sie sich jetzt nicht überlappen, könnten sie in der Zukunft liegen, so dass es nicht schaden wird, die Einschränkungen bereitzustellen.

Mit Xcode können Sie diese Einschränkungen automatisch hinzufügen:

Klicken Sie in der Dokumentenkontur Ihres Storyboards auf den gelben Pfeil und wählen Sie entweder "Feste Führung" oder "Feste Nachführung", je nachdem, wo sich der Text auf Ihrem Bildschirm befindet (links oder rechts). Dies wird es für die meisten Probleme beheben.

 Image

Wenn Sie dieses Problem mit einem Button ohne Text (nur Bild) haben, versuchen Sie, den "Standardtitel" zu entfernen, der möglicherweise noch für den Button festgelegt ist:

 Image

26
Pascal

Mit Labels können Sie festlegen, dass Lines ist 0 und Autoshrink Eigenschaften Minimum Font Size zum Entfernen von Fixed Width Constraints May Cause Clipping-Warnungen wie folgt:

 enter image description here

24
Lionking

Für ein UIButton durch Ändern des Titels von "Nur" in "Attributed text" wurde auch mein Problem behoben:

 enter image description here

9
dreamBegin

Swift 4, Xcode 9.1:

Zu diesem Problem denke ich, dass Ihr Objekt nicht weiß, was die richtige Mittelposition im Kontext von Superview ist, und dass Entfernen, größer als oder andere führende/trealing-Einstellungen verwendet werden nicht richtig arbeiten Zuerst müssen Sie die korrekten Bedingungen Ihres Superview überprüfen. 

Wenn Ihre Überblicke richtig eingestellt sind, können Sie versuchen, Ihrem Objekt die richtige Position in der Ansicht "zu erklären", indem Sie die Einschränkung "horizontal in Container" setzen:

 enter image description here

3

Ich weiß, dass diese Frage bereits beantwortet wurde. Was ich in diesem Fall jedoch getan habe, um diesen Fehler zu beheben, bestand darin, die Eigenschaft "Seitenverhältnis" hinzuzufügen und dann die Breiten- oder Höhenbeschränkung zu beseitigen. Dies funktionierte ziemlich gut und war weniger Aufwand die gleiche Ausgabe und passen meine Ansicht für die verschiedenen Geräte an.

3
reojased

Ich hatte das gleiche Problem, als ich zu Xcode 9 wechselte, und fand einen Ansatz, der für bestimmte Layouts hilfreich ist. In meinem Fall wollte ich einen Tabellenkopf, in dem zwei Spalten (UILabels) eine feste Breite und eine andere eine variable Breite hatten. Unabhängig davon, wie ich Spaltenbreiten angegeben habe (einschließlich der Verwendung von Bedingungen, die größer oder gleich sind, anstelle von "gleich" usw.), wurde mir immer die Warnung vor möglichen Beschneidungen angezeigt. In meinem Fall wollte ich, dass die Spalte mit der variablen Breite (UILabel) bei Bedarf zugeschnitten wird. Ich hätte die Warnung einfach ignorieren können, aber das mag ich nicht.

Der Ansatz, der hier arbeitete, bestand darin, eine UIView mit entsprechenden Größenbeschränkungen zu erstellen und das UILabel als Unteransicht in die UIView einzubetten. Dann erfolgt ggf. eine Kürzung und ich bekomme keine Warnung. Dies funktioniert unabhängig davon, ob sich das UIView/embedded UILabel in einer StackView befindet oder nicht. 

Dies ist im Wesentlichen der gleiche Ansatz wie der von Haroldo Gondim, aber hier kann man sehen, dass er auch mit oder ohne StackView funktioniert.

Das folgende Bild zeigt die Vorgehensweise mit und ohne StackView. "SpacerName" ist eine UIView mit variabler Breite, die ein Label enthält, und "SpacerPD" hat eine feste Breite von 80. [Farben sind nicht signifikant; nur dort, um zu zeigen, wo die Ansichten sind.] 

 enter image description here

1
Tom Linton

Ich hatte das gleiche Problem, aber wenn ich zu >= wechsle, wird die Konstante automatisch auf 0 gesetzt. Wenn ich beispielsweise 60 wähle, erscheint die Warnung erneut. Also war ich in einer Schleife mit dem Problem.

Ich könnte das Einbetten meiner Label in eine View korrigieren.

Editor > Embed In > View

In Label setze ich Top, Bottom, Leading und Trailing mit constant = 0

 constraints

In View habe ich die constraints eingestellt, die ich vorher erwartet hatte.

1
Haroldo Gondim

So beheben Sie den Fehler: Feste Breitenbeschränkungen können Clipping verursachen “und andere Lokalisierung. __ Sie müssen die Ansicht/das Objekt auswählen, im" Informationen anzeigen "-Infektor nach der Breitenbeschränkung suchen und die Konstante auf" Größer "setzen oder gleich: 

 Size Inspector

Zum Beheben des Fehlers: Es fehlt eine führende/nacheilende Einschränkung, die zu einer Überlappung mit anderen Ansichten führen kann

Dies bedeutet, dass der View/Object-Xcode sich beschwert, dass eine führende oder nachstehende Einschränkung für eine benachbarte Ansicht fehlt. 

Ziehen Sie bei gedrückter Maustaste auf eine nahe Ansicht/ein Objekt 

 Contrl + PressClick

Eine führende oder nachfolgende Einschränkung hinzufügen

 Leading/Trailing Constraint

0
Manny

Ich hatte ein ähnliches Problem, als ich versuchte, den Button mit den gleichen Auffüllungen von den Rändern der Super-Ansicht aus zu haben.

 Error case

Ich habe am Ende horizontal center-Einschränkung und equal widths-Einschränkung für super view verwendet.

 My solution

0
Pei

Wie Sie im Bild unten sehen können, hatte ich den Fehler "Feste Breitenbeschränkungen können zu Beschneidungen führen", da ich zwar mein Textfeld vertikal zentriert eingestellt hatte und mein Label eine linke Randbeschränkung hatte, aber ich t definierte eine Einschränkung für das Textfeld in Bezug auf das Label, sodass XCode mich darauf aufmerksam machte, dass das Textfeld das Label abschneiden könnte (darüber gerendert werden könnte).

 enter image description here

Nachdem Sie die linke Einschränkung in das Textfeld eingefügt haben, um immer etwas Abstand von der Beschriftung zu halten, wurde der Fehler als von XCode gelöst betrachtet und es störte mich nicht mehr mit der Einschränkungswarnung.

0
Ulysses Alves

Wenn Sie eine feste Breitenbeschränkung für die Schaltfläche benötigen, setzen Sie die Breitenbeschränkungspriorität auf 700.

0
ChikabuZ