Ich verstehe nicht, Zwänge Priorität
Erstelle ich ein Rechteck mit folgenden Einschränkungen:
Obwohl ich, wenn ich die Priorität festlegen von Einschränkungen mit width >=250
zu 999
, dann Breite equal == 200
arbeiten auf kleinen Geräten und mit width >= 250
auf große.
Aber es ist nicht so geklappt. Ich Lesen Sie die Dokumentation:
Nach der Lösung für die erforderlichen Einschränkungen, Auto-Layout versucht
lösen Sie alle optionalen Einschränkungen in der Reihenfolge Ihrer Priorität (von der höchsten bis
am geringsten. Wenn es nicht lösen kann, für eine optionale Einschränkung, es versucht zu
kommen Sie so nah wie möglich an das gewünschte Ergebnis, und dann bewegt sich auf
die nächste Einschränkung.Diese Kombination von Ungleichungen, Gleichungen und Prioritäten gibt Sie
eine große Menge an Flexibilität und Leistung. Durch die Kombination mehrerer
Einschränkungen Sie können die layouts definieren, die sich dynamisch anpassen, wenn die Größe
und Lage der Elemente in der Benutzeroberfläche ändern.
- Wenn Sie eine Einschränkung, sagt Ihre Breite sollte bei 200, und dass die Einschränkung erforderlich ist, dann wird es immer 200 Punkte breit. Ich sehe nichts in den Einschränkungen, die Sie aufgeführt, die bewirken, dass Sie Einschränkungen zum wechseln zu >=250 Einschränkung. Sie etwas hinzufügen möchten, wie führende und nachfolgende Einschränkungen, die versuchen, um die box breiter ist, wenn es den Raum, dies zu tun.
- Nur, wenn zwei Bedingungen Konflikt wird die Priorität werden die tie-breaker. Daher ist es nicht nur eine einzige Einschränkung
width >= 250
und erwarten, dass die Größe des Bildes zu wachsen, basierend auf der Größe der Ansicht in das Gerät. Sie haben noch andere Einschränkungen, die erlauben würde, "auto-layout" zu nehmen, dieser Ungleichheit Rechnung mit Bezug auf die neu hinzugefügten Einschränkungen.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die Priorität für die Einschränkungen eingesetzt werden, um die zu lösen ein Konflikt zwischen zwei verschiedenen Einschränkungen. Der Rahmen ist der Ansicht verändert werden, die die Anwendung der constraint-mit mehr Priorität. Also, sollten Sie haben eine andere Ansicht oder verwenden Sie das superview gelten die Priorität auf die Einschränkungen.
Dies ist eine nette Antwort erklärt die Beständigkeit Priorität:
Kakao Autolayout: Inhalt umarmt vs content compression resistance Priorität
iOS tut, was Sie sagen. Einschränkungen deaktivieren nicht automatisch je nach Bildschirm-Größen. Constraints mit höherer Priorität wird zuerst angewendet.
So, bei iOS muss das layout Ihrer view, it-lookup wird die Angaben, die Sie zur Verfügung gestellt. Nun, nach Ihren vorgegebenen Spezifikation, die Sicht sollte die Breite von 200 (höchste Priorität) unabhängig von der Bildschirmgröße. So dass diese Beschränkung angewendet wird, und Sie bekommen Ihre Ansicht mit der Breite 200.
Wie Sie das tun können, was Sie wollen?
Sollten Sie versuchen, deaktivieren Sie die Einschränkung mit "width" - Angabe von 200, wenn Sie Ihre app läuft auf großer Leinwand dann Ihre anderen Einschränkung funktioniert und geben richtige Ergebnis.
Zur Deaktivierung/Aktivierung von constraint -
Stackoverflow Link
Apple Developer Library