2017-09-14 3 views
4

Es gibt this other question hier, die ein ähnliches Problem angeht, aber in diesem Fall ist das Verhalten von Xcode korrekt, nur nervig."Korrigierte führende und nachfolgende Einschränkungen können Clipping-Fehler verursachen?

In meinem Fall aber ich denke, es ist eigentlich ein Fehler:

example

Das Etikett eine unbegrenzte Anzahl von Zeilen haben kann, so dass es nie abgeschnitten werden, bricht der Text einfach.

Es funktioniert mit jeder Lokalisation fein:

example2

ich das Etikett zentriert sein soll, und ich möchte den Text von den Rändern mindestens 20 Pixel entfernt werden, so dass ich eingestellt für die feste Beschränkungen Vorlauf und Nachlauf. Xcode möchte, dass ich eine davon in eine "Größer als oder gleich" Einschränkung umwandle, aber in diesem Fall wird der Text nicht perfekt zentriert (ich habe es versucht).

Alles, was ich will ist zentrierter Text, der nicht zu nahe an den Rändern sein wird, aber jetzt kann ich das nicht erreichen, ohne diese Warnung auszulösen.

Irgendwelche Ideen, wie Sie das beheben können? Ist es wirklich ein Fehler, oder mache ich etwas falsch?


Edit: Hier ist ein Screenshot des Fehlers zeigt. Die Einschränkungen befinden sich nicht direkt in einem Ansichtscontroller, sondern in einer Teilansicht, die ich als Hintergrund für eine Tabellenansicht verwende. Wenn ich diese Einschränkungen beseitige, verschwindet die Warnung; Wenn ich sie wieder hinzufüge, erscheint es wieder. Ich habe das in einem neuen Projekt versucht und konnte es nicht reproduzieren, ich habe keine Ahnung, warum es hier passiert.

example3

Edit:

Hier ist ein weiteres Beispiel. Wenn die rechte Einschränkung ist auf "größer oder gleich" alles gut:

example4

Sobald ich es auf "gleich", boom:

example5

+0

können Sie die Warnung posten, die Sie erhalten? und welchen xcode suchst du? –

+0

@ReinierMelian Xcode 9; Ich habe es als Tag festgelegt, aber vergessen, im Text zu erwähnen. Die Warnung ist die im Titel. Der vollständige Text besagt, dass "fixed leading und hanging constraints clipping verursachen können, einer von ihnen sollte eine Konstante ≥ Standard Space" haben. Vielen Dank. :) – dbmrq

+0

@ReinierMelian Wenn ich eine der Bedingungen auf "größer als oder gleich" setze, verschwindet die Warnung, aber der Text wird nicht auf die Ansicht zentriert. – dbmrq

Antwort

2

in XCode Checked 9GM (Version 9.0 (9A235)), funktioniert es richtig

enter image description here

Remo Überprüfen Sie die Einschränkungen und fügen Sie sie manuell hinzu.

+0

Wie seltsam, ich habe es gerade an einem neuen Projekt versucht, und es funktioniert gut, aber aus irgendeinem Grund passiert es immer noch auf dem Projekt, das ich zuvor gearbeitet habe, selbst wenn ich die Einschränkungen entferne und sie wieder hinzufüge. :/ – dbmrq

+0

@dbmrq Bitte machen Sie einen Screenshot mit dem Rest der Ansicht von diesem VC und deren Einschränkungen – OMGHaveFun

+0

Ich habe meine Frage mit einem anderen Screenshot bearbeitet. Danke für Ihre Hilfe. – dbmrq

2

Einige Probleme hier, mit der endgültigen Version von Xcode9 eingeführt. Scheint, dass der Fehler mit der Sprachrichtung zusammenhängt: Aus irgendeinem Grund versteht Interface Builder das automatische Layout für die Standard-Sprachrichtungsbedingungen nicht recht gut.

Wie von Repose auf dieser thread vorgeschlagen, sollten Sie versuchen, die Verwendung der Sprachrichtung für mindestens eine der fehlerhaften Constraints (dh Trailing) ungültig zu machen. Dieser Ansatz löste meine Warnungen.

1

Wenn Sie immer noch nach einer Antwort suchen, versuchen Sie in Ihrem speziellen Fall, eine proportionale Breite auf Ihrem Etikett einzustellen und horizontal in der Ansicht des Ansichtscontrollers zu zentrieren.

Alle löschen Einschränkungen auf dem Etikett der rechten Maustaste ziehen Sie von dem Etikett auf der Background View und wählen Sie Equal Widths, Center Horizontally in Container und Center Vertically in Container aus dem Popup-Menü.

Jetzt, da Sie sagten, Sie wollten 20px Rand sowohl links als auch rechts von Ihrem Etikett, bearbeiten Sie die Multiplier auf die gleiche Breite Einschränkung und setzen Sie es auf widthOfBackgroundView - 40)/widthOfBackgroundView.

Nehmen wir an, die Breite Ihrer Hintergrundansicht ist 414, der Multiplikator soll 374/414 sein.

Der Grund für den width minus 40 Multiplikator ist, dass es 20px auf beiden Seiten des Etiketts abdeckt. Dies sollte Ihre Warnung verschwinden lassen und das Etikett so gestalten, wie Sie es erwarten.

Ich hatte das gleiche Problem und war in der Lage, die Warnungen auf diese Weise zu beheben. Hoffe das hilft!

+0

Willkommen bei SO. Bitte ping nicht in Antworten. Verwenden Sie Kommentare dafür. Der Autor der Frage wird Ihre Antwort trotzdem sehen. – Simon

+0

Die Warnungen scheinen aus heiterem Himmel verschwunden zu sein, aber das ist eine gute Idee, ich werde es im Hinterkopf behalten, wenn es wieder passiert. :) – dbmrq

Verwandte Themen