Wenn Einschränkungen nicht gleichzeitig erfüllt werden können, wird versucht, sie durch Aufheben der Einschränkung wiederherzustellen

145

Unten ist die Fehlermeldung, die ich im Debug-Bereich erhalte. Es läuft gut und nichts ist falsch, außer dass ich diesen Fehler erhalte. Würde dies verhindern, dass Apple die App akzeptiert? Wie behebe ich das?

2012-07-26 01:58:18.621 Rolo[33597:11303] 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) 
(
    "<NSAutoresizingMaskLayoutConstraint:0x887d630 h=--& v=--& V:[UIButtonLabel:0x886ed80(19)]>",
    "<NSAutoresizingMaskLayoutConstraint:0x887d5f0 h=--& v=--& UIButtonLabel:0x886ed80.midY == + 37.5>",
    "<NSAutoresizingMaskLayoutConstraint:0x887b4b0 h=--& v=--& V:[UIButtonLabel:0x72bb9b0(19)]>",
    "<NSAutoresizingMaskLayoutConstraint:0x887b470 h=--& v=--& UIButtonLabel:0x72bb9b0.midY == - 0.5>",
    "<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>",
    "<NSLayoutConstraint:0x72c2430 UILabel:0x72bfad0.top == UILabel:0x72bf7c0.top>",
    "<NSLayoutConstraint:0x72c2370 UILabel:0x72c0270.top == UILabel:0x72bfad0.top>",
    "<NSLayoutConstraint:0x72c22b0 V:[UILabel:0x72bf7c0]-(NSSpace(8))-[UIButton:0x886efe0]>",
    "<NSLayoutConstraint:0x72c15b0 V:[UILabel:0x72c0270]-(NSSpace(8))-[UIRoundedRectButton:0x72bbc10]>",
    "<NSLayoutConstraint:0x72c1570 UIRoundedRectButton:0x72bbc10.baseline == UIRoundedRectButton:0x7571170.baseline>",
    "<NSLayoutConstraint:0x72c21f0 UIRoundedRectButton:0x7571170.top == UIButton:0x886efe0.top>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]>

Break on objc_exception_throw to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKit/UIView.h> may also be helpful.
Johnny Cox
quelle
1
Dieser Fehler tritt nur in Xcode 4.5 auf, sodass Sie ihn ohnehin nicht an den App Store
senden
Also ist da nichts falsch? Und wäre es möglich, eine andere Version von xcode zu verwenden, um sie an den App Store senden zu können?
Johnny Cox
1
Ja, es stimmt etwas nicht, aber es ist irrelevant, da es mit einer Funktion von iOS zu tun hat, die in öffentlichen Xcode-Versionen noch nicht verfügbar ist. Wenn es mit 4.4 kompiliert wird, können Sie es mit dieser Version veröffentlichen (es wurde heute veröffentlicht).
Borrrden
Ich erhalte diese Fehlermeldung für OS X-Apps in Xcode 4.4. Ich verstehe es nicht
Steve McLeod
@ Bartłomiej Semańczyk Könnten Sie sich zufällig dem Raum anschließen: chat.stackoverflow.com/rooms/92522/autolayout-and-ios ? Es tut uns leid, dass es zufällig ist, aber ich würde mich über Ihren Rat zu einem automatischen Layout freuen, danke!
Cheznead

Antworten:

275

Ich würde empfehlen, zu debuggen und herauszufinden, welche Einschränkung "die ist, die Sie nicht wollen" . Angenommen, Sie haben folgendes Problem:

Geben Sie hier die Bildbeschreibung ein

Das Problem ist immer, wie man die folgenden Einschränkungen und Ansichten findet.

Hierfür gibt es zwei Lösungen:

  1. DEBUG VIEW HIERARCHY (Auf diese Weise nicht empfehlen)

Da Sie wissen, wo unerwartete Einschränkungen zu finden sind (PBOUserWorkDayHeaderView), gibt es eine Möglichkeit, dies ziemlich gut zu tun. Lass uns finden UIViewund NSLayoutConstraintin roten Rechtecken. Da wir ihre ID im Gedächtnis kennen , ist es ziemlich einfach.

  • Beenden Sie die App mithilfe der Debug-Ansichtshierarchie :

Geben Sie hier die Bildbeschreibung ein

  • Finden Sie die richtige UIView:

Geben Sie hier die Bildbeschreibung ein

  • Das nächste ist, NSLayoutConstraint zu finden, das uns wichtig ist:

Geben Sie hier die Bildbeschreibung ein

Wie Sie sehen können, sind die Speicherzeiger gleich. Wir wissen also, was jetzt los ist. Zusätzlich finden Sie NSLayoutConstraintin der Ansicht Hierarchie. Da es in der Ansicht ausgewählt ist, wird es auch im Navigator ausgewählt.

Geben Sie hier die Bildbeschreibung ein

Bei Bedarf können Sie es auch mit dem Adresszeiger auf der Konsole drucken:

(lldb) po 0x17dce920
<UIView: 0x17dce920; frame = (10 30; 300 24.5); autoresize = RM+BM; layer = <CALayer: 0x17dce9b0>>

Sie können dasselbe für jede Einschränkung tun, auf die der Debugger Sie hinweist :-) Jetzt entscheiden Sie, was Sie damit tun möchten.

  1. BESSER DRUCKEN (Ich empfehle diesen Weg wirklich, dies ist von Xcode 7)

    • Legen Sie für jede Einschränkung in Ihrer Ansicht eine eindeutige Kennung fest:

Geben Sie hier die Bildbeschreibung ein

  • Erstellen Sie eine einfache Erweiterung für NSLayoutConstraint:

SWIFT :

extension NSLayoutConstraint {

    override public var description: String {
        let id = identifier ?? ""
        return "id: \(id), constant: \(constant)" //you may print whatever you want here
    }
}

ZIEL C

@interface NSLayoutConstraint (Description)

@end

@implementation NSLayoutConstraint (Description)

-(NSString *)description {
    return [NSString stringWithFormat:@"id: %@, constant: %f", self.identifier, self.constant];
}

@end
  • Erstellen Sie es noch einmal, und jetzt haben Sie mehr lesbare Ausgabe für Sie:

Geben Sie hier die Bildbeschreibung ein

  • Sobald Sie Ihre erhalten haben id, können Sie sie einfach in Ihrem Find Navigator antippen :

Geben Sie hier die Bildbeschreibung ein

  • und schnell finden:

Geben Sie hier die Bildbeschreibung ein

WIE MAN DIESEN FALL EINFACH BEHEBT?

  • versuchen zu ändern Priorität zu 999für gebrochene Einschränkung.
Bartłomiej Semańczyk
quelle
Dies hat gerade meinen Fehler behoben ... vielen Dank. Wie würden Sie dies für Ziel c tun? Kategorie hinzufügen?
Cheznead
Danke für die Lösung, aber kann ich die Erweiterung in Ziel c verwenden?
dev.nikolaz
Entspricht dieser Bezeichner dem AccessibilityIdentifier, der programmgesteuert in UIViews verfügbar ist? Wenn nicht, wie kann die Kennung programmgesteuert eingestellt werden?
Arunabh Das
@Das nein, es ist nicht dasselbe. Lesen Sie diese Antwort
Bartłomiej Semańczyk
3
Ich mag den 2. Weg und ich denke, es ist der beste Weg, um gebrochene Einschränkungen zu verfolgen
Antarix
108

Das Problem, das Sie haben, ist, dass die NSAutoresizingMaskLayoutConstraints nicht vorhanden sein sollten. Dies ist das alte System von Federn und Streben. Führen Sie diese Methode für jede Ansicht aus, die Sie einschränken möchten, um sie zu entfernen:

[view setTranslatesAutoresizingMaskIntoConstraints:NO];
David Wong
quelle
5
Was sind einige Gründe dafür, dass eine Ansicht überhaupt nicht angezeigt wird, wenn setTranslatesAutoresizingMaskIntoConstraints auf NO gesetzt wird?
Topwik
1
Als Beispiel erstelle ich eine SSBadgeView (UIView), füge der SSBadgeView eine imageView-Unteransicht hinzu und füge dann die SSBAdgeView als Unteransicht einer UIReuseableView hinzu. Ich füge der SSBadgeView einige Einschränkungen hinzu und setTranslatesAutoresizingMaskIntoConstraints: NO in der SSBadgeView. Die Bild-Unteransicht der SSBadgeView ist wie erwartet angelegt, aber die übergeordnete SSBadgeView-Ansicht des Bildes ist nirgends zu sehen.
Topwik
1
Sie haben vergessen, TranslatesAutoresizingMaskIntoConstraints in Ihren
Unteransichten
Dies passiert, wenn ich diese Eigenschaft festlege : drive.google.com/file/d/0BxuYs8WHXCF7bV9ndHFrQ0dMYVE/… Ich verwende diese Codezeile: [self.contentView setTranslatesAutoresizingMaskIntoConstraints: NO]; for (UIView * -Ansicht in self.contentView.subviews) {[view setTranslatesAutoresizingMaskIntoConstraints: NO]; } Früher sah es so aus: drive.google.com/file/d/0BxuYs8WHXCF7OWlvZGQwN3FlbzQ/… Es hat aber funktioniert, muss ich sagen.
rptwsthi
28

Achten Sie darauf , dass Sie nicht mehr als eine Einschränkung in derselben Richtung und in demselben Typ verwenden.

Beispiel: Vertikale Einschränkung für Trailing = 15 und eine andere ist> = 10.

Manchmal erzeugt Xcode einige Einschränkungen, die Sie nicht bemerken . Sie müssen redundante Einschränkungen beseitigen, und die Protokollwarnung wird mit Sicherheit verschwinden.

Geben Sie hier die Bildbeschreibung ein

Darüber hinaus können Sie bestimmte Gründe direkt aus dem Protokoll lesen und erkennen :

NSLayoutConstraint: 0xa338390 V: | - (15) - [UILabel: 0xa331260] (Namen: '|': UILabel: 0xa330270)>

Dies können wir als Problem in der UILabel-Einschränkung lesen. Die führende vertikale Einschränkung ist 15pt lang.

NSLayoutConstraint: 0x859ab20 H :-( 13) - | [UIView: 0x85a8fb0] ...

Dies wäre eine nachlaufende horizontale Einschränkung usw.

pedrouan
quelle
6

Ich hatte eine ganze Reihe dieser Ausnahmen ausgelöst. Der schnellste und einfachste Weg, sie zu lösen, bestand darin, eindeutige Werte in den Ausnahmen zu finden, nach denen ich dann im Storyboard-Quellcode gesucht habe. Dies hat mir geholfen, die tatsächlichen Ansichten und Einschränkungen zu finden, die das Problem verursachen (ich verwende aussagekräftige userLabels für alle Ansichten, wodurch es viel einfacher ist, die Einschränkungen und Ansichten zu verfolgen) ...

Mit den oben genannten Ausnahmen würde ich das Storyboard als "Quellcode" in xcode (oder einem anderen Editor) öffnen und nach etwas suchen, das ich finden kann ...

<NSLayoutConstraint:0x72bf860 V:[UILabel:0x72bf7c0(17)]> 

.. dies sieht aus wie eine vertikale (V) Einschränkung für ein UILabel mit einem Wert von (17).

Wenn ich die Ausnahmen durchschaue, finde ich auch

<NSLayoutConstraint:0x72c22b0 V:[UILabel:0x72bf7c0]-(NSSpace(8))-[UIButton:0x886efe0]>

Das UILabel (0x72bf7c0) befindet sich in der Nähe eines UIButton (0x886efe0) mit einem vertikalen Abstand (8).

Das wird hoffentlich ausreichen, um die spezifischen Ansichten im Storyboard-Quellcode (wahrscheinlich durch anfängliches Durchsuchen des Textes nach "17") oder zumindest einige wahrscheinliche Kandidaten zu finden. Von dort aus sollte ich in der Lage sein, tatsächlich herauszufinden, welche Ansichten sich diese im Storyboard befinden, wodurch es viel einfacher wird, das Problem zu identifizieren (suchen Sie nach "doppeltem" Pinning oder Pinning, das im Widerspruch zu Größenbeschränkungen steht).

C James
quelle
"Ich verwende aussagekräftige userLabels" - was sind userLabels in diesem Zusammenhang? (wie man sie einstellt)
Streifen
Im Abschnitt "Dokument" des Identitätsinspektors befindet sich ein Feld "Label" .., das im Storyboard-Quellcode in einen "userLabel" -Wert übersetzt wird.
C James
Sie können sie auch festlegen, indem Sie auf eine ausgewählte Ansicht im linken Bereich "Übersicht" klicken (ähnlich wie beim Umbenennen einer Datei im Finder)
C James
1
Wahrscheinlich das Beste, was ich in Bezug auf die Lösung des gefürchteten "Kann nicht gleichzeitig Einschränkungen erfüllen" gelesen habe. Schmerzen. Ich fand heraus, dass das an dieser Stelle gezeigte Objekt "Wird versuchen, durch Aufheben der Einschränkung <NSLayoutConstraint:" wiederherzustellen: "normalerweise der Schuldige ist, und wie C James sagt, wahrscheinlich eine Höhen- oder Breitenbeschränkung, die mit den Fixierungsbeschränkungen in Konflikt steht. Ich fand es schwierig, die Höhe zu entfernen, aber da die Einschränkungen korrekt waren, konnte die Höhe von den anderen Einschränkungen abgeleitet werden. Das Hinzufügen einer Höhenbeschränkung hat das automatische Layout nur verwirrt. Deshalb suche ich jetzt danach.
Latenitcoder
6

Es fiel mir schwer herauszufinden, welche Einschränkungen diesen Fehler verursachten. Hier ist eine einfachere Möglichkeit, dies zu tun.

Ich benutze Xcode 6.1.1

  1. "Befehl + A" zur Auswahl aller UILabels, UIImages usw.
  2. Klicken Sie in der Übersicht auf Editor -> Pin> (Auswählen ...)
  3. Klicken Sie erneut auf Editor -> Probleme mit dem automatischen Layout beheben -> Fehlende Einschränkungen hinzufügen oder auf vorgeschlagene Einschränkungen zurücksetzen. Es hängt von Ihrem Fall ab.
Ronaldoh1
quelle
5

Ich hatte dieses Problem, weil meine .xibDateien Autolayout verwendeten.

Im Dateiinspektor die erste Registerkarte. Durch Deaktivieren von "Autolayout verwenden" wurde das Problem behoben.

Autolayout-Dateiinspektor

Stéphane Bruckert
quelle
Also habe ich das gemacht und es hat das Problem behoben, aber ein 'UIImageView', das ich oben auf dem Bildschirm hatte (das ich als Navigationsleiste verwendet habe), wurde an den unteren Rand des Bildschirms verschoben. Weißt du warum das passiert ist?
Dietbacon
1
Autolayout verwendet Einschränkungen , um das Layout von Objekten zu steuern. Da Sie gerade das automatische Layout deaktiviert haben, sind diese Einschränkungen höchstwahrscheinlich verschwunden, und daher UIImageViewhat sich Ihre Position geändert. Sie müssen diese Position entweder programmgesteuert oder über den Interface Builder erneut festlegen.
Stéphane Bruckert
5

Hier ist meine Erfahrung und Lösung. Ich habe den Code nicht berührt

  1. Ansicht auswählen (UILabel, UIImage usw.)
  2. Editor> Pin> (Auswahl ...) an Superview
  3. Editor> Automatische Layoutprobleme beheben> Fehlende Einschränkungen hinzufügen
Royemi
quelle
4

Verwenden Sie schnell diesen Code

view.translatesAutoresizingMaskIntoConstraints = false
Arun Kumar P.
quelle
1
Dies ist eine schnelle Antwort auf eine Frage mit objektivem C-Tag.
Tobi Nary
2
@ SmokeDispenser Wie auch immer, ich habe erwähnt, dass dies ein schneller Code ist. und es wird für mich gearbeitet. schnell / objektiv ist es üblich, Kakao Touch SDK.
Arun Kumar P
2

Ich habe SO Fragen und Antworten von jeder Suchanfrage verfolgt. Aber sie sind alle mit einem bestimmten verwandt.

Grundsätzlich meine ich, bevor Sie ein Format aufschreiben (möglicherweise ein einfaches), werden Sie gewarnt.

Ab iOS 8.0 sind Ansichten standardmäßig Größenklassen. Selbst wenn Sie Größenklassen deaktivieren, enthält es einige Einschränkungen für das automatische Layout.

Wenn Sie also planen, Einschränkungen mithilfe von VFL über Code festzulegen. Dann müssen Sie sich um eine unter der Zeile kümmern.

// Remove constraints if any.
[self.view removeConstraints:self.view.constraints];

Ich hatte viel in SO gesucht, aber die Lösung lag im Apple Sample Code .

Sie müssen also die Standardeinschränkungen entfernen, bevor Sie neue hinzufügen möchten.

Kampai
quelle
1

Für mich war der Hauptgrund für dieses Problem, dass ich vergessen habe, das Kontrollkästchen AutoLayoutim XibEditor zu deaktivieren . Tatsächlich habe ich viele Anpassungen am XIBIn-Code vorgenommen.

giuseppe
quelle
1
 for(UIView *view in [self.view subviews]) {
    [view setTranslatesAutoresizingMaskIntoConstraints:NO];
}

Dies hat mir geholfen, die Ansicht zu erfassen, die das Problem verursacht hat.

Grant Carlisle
quelle
1

Keine der vorstehenden Antworten ist in meiner Situation hilfreich. Ich verwende XCode 10.1 und teste meine App auf dem Simulator für ein "iPad (5. Generation)". Auf dem Simulator wird iOS 12.1 ausgeführt.

Ich habe eine einfache Stammansicht in meinem Storyboard mit zwei UITextField-Unteransichten. Im Storyboard werden überhaupt keine Einschränkungen verwendet. Und ich habe keine UIButtonBarView-Objekte in der App oder im Storyboard.

Beim Starten der App und beim Auslegen der Stammansicht werden keine Nachrichten gedruckt. Keine, wenn das simulierte Gerät gedreht wird.

Sobald ich im Simulator auf eines der Textfelder klicke, wird die Tastaturerweiterung am unteren Bildschirmrand angezeigt, jedoch nicht die vollständige Tastatur, die im Simulator nie angezeigt zu werden scheint. Auf dem Terminal ist jedoch Folgendes ausgedruckt:

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) 
(
"<NSAutoresizingMaskLayoutConstraint:0x6000034e7700 h=--& v=--& UIKeyboardAssistantBar:0x7f9c7d714af0.height == 0   (active)>",
"<NSLayoutConstraint:0x6000034aba20 V:|-(0)-[_UIUCBKBSelectionBackground:0x7f9c7d51ec70]   (active, names: '|':_UIButtonBarButton:0x7f9c7d51de40 )>",
"<NSLayoutConstraint:0x6000034aba70 _UIUCBKBSelectionBackground:0x7f9c7d51ec70.bottom == _UIButtonBarButton:0x7f9c7d51de40.bottom   (active)>",
"<NSLayoutConstraint:0x6000034fb3e0 V:|-(0)-[_UIButtonBarStackView:0x7f9c7d715880]   (active, names: '|':UIKeyboardAssistantBar:0x7f9c7d714af0 )>",
"<NSLayoutConstraint:0x6000034fb750 V:[_UIButtonBarStackView:0x7f9c7d715880]-(0)-|   (active, names: '|':UIKeyboardAssistantBar:0x7f9c7d714af0 )>",
"<NSLayoutConstraint:0x6000034abc00 'UIButtonBar.maximumAlignmentSize' _UIButtonBarButton:0x7f9c7d51de40.height == UILayoutGuide:0x600002ef4e00'UIViewLayoutMarginsGuide'.height   (active)>",
"<NSLayoutConstraint:0x6000034d7cf0 'UIView-bottomMargin-guide-constraint' V:[UILayoutGuide:0x600002ef4e00'UIViewLayoutMarginsGuide']-(9)-|   (active, names: '|':_UIButtonBarStackView:0x7f9c7d715880 )>",
"<NSLayoutConstraint:0x6000034d7c50 'UIView-topMargin-guide-constraint' V:|-(10)-[UILayoutGuide:0x600002ef4e00'UIViewLayoutMarginsGuide']   (active, names: '|':_UIButtonBarStackView:0x7f9c7d715880 )>"
)

Will attempt to recover by breaking constraint 
<NSLayoutConstraint:0x6000034aba70 _UIUCBKBSelectionBackground:0x7f9c7d51ec70.bottom == _UIButtonBarButton:0x7f9c7d51de40.bottom   (active)>

Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.

Es scheint mir, dass all dies nichts mit meiner App zu tun hat und alles damit, wie Apple seine eigene Tastaturansicht erstellt, selbst wenn meine kleine Erweiterung als damit kombiniert deklariert ist.

Es bleibt also die Frage, ob ich als App-Entwickler für etwas verantwortlich bin (unter der Annahme, dass dies eine Reihe von Dingen ist, die es wert sind, behandelt zu werden), oder ob es nur Apples eigenes Problem / Fehler ist.

FWIW, diese Einschränkungsproblemmeldung tritt nicht auf, wenn ein neueres iPad-Modell wie das iPad Pro 12,9 Zoll (3. Generation) simuliert wird. Die Meldung wird jedoch angezeigt, wenn ein iPad Pro 9,7-Zoll simuliert wird. Alle behaupten, iOS 12.1 auszuführen.

jsbox
quelle
1

Ich erhalte den gleichen Fehler, jedoch nur in einer bestimmten Ansicht, wenn ich das erste Textfeld und dann das nächste Textfeld nach unten berühre.

Ich schreibe in SwiftUI für iOS 13.4

 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. 
    (
        "<NSLayoutConstraint:0x2809b6760 'assistantHeight' TUISystemInputAssistantView:0x105710da0.height == 44   (active)>",
        "<NSLayoutConstraint:0x2809ccff0 'assistantView.bottom' TUISystemInputAssistantView:0x105710da0.bottom == _UIKBCompatInputView:0x10525ae10.top   (active)>",
        "<NSLayoutConstraint:0x2809cccd0 'assistantView.top' V:|-(0)-[TUISystemInputAssistantView:0x105710da0]   (active, names: '|':UIInputSetHostView:0x105215010 )>",
        "<NSLayoutConstraint:0x2809ca300 'inputView.top' V:|-(0)-[_UIKBCompatInputView:0x10525ae10]   (active, names: '|':UIInputSetHostView:0x105215010 )>"
    )

    Will attempt to recover by breaking constraint 
    <NSLayoutConstraint:0x2809ccff0 'assistantView.bottom' TUISystemInputAssistantView:0x105710da0.bottom == _UIKBCompatInputView:0x10525ae10.top   (active)>

    Make a symbolic breakpoint at UIViewAlertForUnsatisfiableConstraints to catch this in the debugger.
    The methods in the UIConstraintBasedLayoutDebugging category on UIView listed in <UIKitCore/UIView.h> may also be helpful.
DckBrd
quelle
0

Ich hatte auch das gleiche Problem mit dem Aufheben von Einschränkungen im Protokoll für einen viewCircle in der xib. Ich habe fast alles versucht, was oben aufgeführt ist, und nichts hat für mich funktioniert. Dann habe ich versucht, die Priorität der Höhenbeschränkung zu ändern, die im Protokoll unterbrochen wurde (bestätigt durch Hinzufügen eines Bezeichners für die Einschränkungen auf der xib). Geben Sie hier die Bildbeschreibung ein

Mogul
quelle
-1

Eine Sache, auf die ich achten sollte (zumindest hat mich das gestolpert), war, dass ich die Einschränkung aus der falschen Sicht entfernte. Die Einschränkung, die ich entfernen wollte, war aus meiner Sicht keine untergeordnete Einschränkung, als ich dies tat

myView.removeConstraint(theConstraint)

Es wurde eigentlich nichts entfernt, weil ich anrufen musste

myView.superView.removeConstraint(theConstraint)

da die Einschränkung meiner Ansicht nach technisch geschwisterliche Einschränkung war.

Adam Johns
quelle
-4

schnell 4

Ich füge diese Zeile einfach in viewDidLoad hinzu und arbeite gut mit mir.

view.removeConstraints(view.constraints)
Faris
quelle