Ich habe eine iMessage-Erweiterung und ich habe einige Probleme mit der Top-Layout-Anleitung. Ich habe eine MSMessagesAppViewController
, die Änderungen zwischen Präsentationsarten behandelt. In meiner Erweiterung habe ich einen Knopf. Wenn Sie darauf klicken, gehe ich zum erweiterten Präsentationsstil über und präsentiere dann einen View-Controller modal. Hier ist das Problem: Meine Benutzeroberfläche in der zweiten VC wird hinter der oberen Navigationsleiste versteckt. Ich dachte, das wäre seltsam, da ich meine Einschränkungen auf die Top-Layout-Anleitung gesetzt habe. Also habe ich meinen Code durchforstet und mit dem Debuggen des Top-Layout-Leitfadens begonnen. Ich habe bemerkt, dass ich nach dem Übergang zum erweiterten Präsentationsstil topLayoutGuide.length
= 86 habe. So sollte es sein. Aber wenn ich den zweiten View-Controller modal präsentiere, wird der Top-Layout-Guide auf 0 zurückgesetzt. Warum ist es nicht 86, wie es sein sollte? Hier ist mein Code:
In meiner HauptansichtController:
%Vor%In dem anderen modal präsentierten View Controller:
%Vor% Als Workaround verwende ich UIPresentationController
, was den modalen View-Controller um topLayoutGuide.length
points verschiebt:
Das einzige Problem ist, wenn Sie presentModalViewController
aus dem Kompaktmodus aufrufen, topLayoutGuide.length
ist 172.0
aus unbekanntem Grund. Also musste ich einen Wert für diesen Fall fest codieren.
Ich habe eine leicht abgewandelte Version von Andreys
verwendet %Vor% modalBoundaries
ist eine Dummy-UIView-Einschränkung (über XIB in meinem Fall), um eine beliebige TopLayoutGuide-Länge einzuhalten.
Tags und Links ios swift autolayout imessage