Ich habe ein Storyboard mit Auto-Layout und Größenklassen. Ziemlich kompliziertes Layout, und leider kann ich nicht genau festlegen, wie das Problem in einem neuen Projekt reproduziert werden soll.
Die fragliche Ansicht wird jedoch am linken und rechten Rand des Bildschirms mit einer Einschränkung mit der Priorität 750 fixiert (dh |-([email protected])-[myView]-([email protected])-|
, zusätzlich hat eine größere oder gleiche als Einschränkung mit einer Priorität von 1000 (dh |-(>=0)-[myView]-(>=0)-|
). Das ist getan, um die Breite auf einem iPad zu beschränken, so gibt es eine Breitenbeschränkung von width <= 600 @1000
, und eine Mitte horizontal in Container Einschränkung Darüber hinaus hat die Ansicht eine Seitenverhältnisbeschränkung von 3: 1 sagte, ziemlich kompliziert.Was ist _UITemporaryLayoutWidth und warum bricht es meine Einschränkungen?
Interface Builder zeigt keine Probleme mit den Einschränkungen.Die Xcode-Layout-Vorschau wird für alle Geräte korrekt dargestellt.
Wenn ich die App ausführen sagt mir iOS, dass es widersprüchliche Einschränkungen hat.
Unable to simultaneously satisfy constraints.
Probably at least one of the constraints in the following list is one you don't want. Try this: (1) look at each constraint and try to figure out which you don't expect; (2) find the code that added the unwanted constraint or constraints and fix it. (Note: If you're seeing NSAutoresizingMaskLayoutConstraints that you don't understand, refer to the documentation for the UIView property translatesAutoresizingMaskIntoConstraints)
(
"<NSLayoutConstraint:0x7fd72853ff80 DMXKit.DipSwitchAssembly:0x7fd72990d0e0.width == 3*DMXKit.DipSwitchAssembly:0x7fd72990d0e0.height>",
"<NSLayoutConstraint:0x7fd728574e50 '_UITemporaryLayoutWidth' H:[DMXKit.DipSwitchAssembly:0x7fd72990d0e0(400)]>",
"<NSLayoutConstraint:0x7fd72856e9c0 V:[DMXKit.DipSwitchAssembly:0x7fd72990d0e0(133)]>"
)
Will attempt to recover by breaking constraint
<NSLayoutConstraint:0x7ffb19798000 DMXKit.DipSwitchAssembly:0x7ffb1979a000.width == 3*DMXKit.DipSwitchAssembly:0x7ffb1979a000.height>
Dies wird einige Male wiederholt, mit den gleichen (d.h.em gleichen pointer) Einschränkungen. Das ist auch merkwürdig, sieht so aus, als wäre die Einschränkung nicht wirklich gebrochen. Wenn sie ausgeführt wird, sieht die App zu 100% korrekt aus. Wenn ich mir die App im Xcode View Debugger anschaue, ist die Einschränkung mit der Adresse 0x7ffb19798000
immer noch da, also wurde sie nie kaputt gemacht.
Woher kommt die Konstanz? Offensichtlich habe ich es nicht hinzugefügt. Google spuckt nichts Nützliches über aus. Ist jemand auf ein Problem wie dieses gestoßen?
, ich habe viel von diese Warnungen auch im Protokoll. Obwohl, scheint es nicht mein Layout zu brechen. Ich frage mich, woher diese '_UITemporaryLayoutWidth's kommen. – dergab