2016-03-24 9 views
0

Wie finde ich die TRUE frame eines Objekts zur Laufzeit bei Verwendung von Autlayout + Constraints?iOS - Ermitteln Sie die Einschränkungen einer Ansicht zur Laufzeit

Ich habe eine UIButton beschränkt auf die obere rechte Ecke des Bildschirms.
Aber wenn ich diese Schaltfläche frame zur Laufzeit abmelde (in viewDidLoad) mir wird gesagt, x Wert ist 500 - was natürlich nicht genau ist (wenn es wäre, wäre die Schaltfläche weg vom Bildschirm.) Aber seit Ich verwende Constraints, der Button ist nicht im Offscreen, er ist gut in der oberen rechten Ecke versteckt, so wie es sein sollte.

Also ich versuche herauszufinden, was es ist x Wert ist.

* Letztlich ist dies zu erreichen, was ich versuche: Der Benutzer muss sich dieses Objekt ziehen zu können, und irgendwann muss die App das Objekt zurück in seine ursprüngliche Position animieren.

Irgendwelche Vorschläge, wie man das macht?

+0

Der Rahmen einer Ansicht ist relativ zu ihrem übergeordneten Element, sodass 500 abhängig von Ihrer Ansichtshierarchie korrekt sein kann. –

Antwort

0

Sie NSLog den Rahmen nicht in der ViewDidLoad aber ViewDidLayoutSubviews. Beim Autolayout werden Unteransichten nicht so angepasst, dass sie auf den Bildschirm in viewDidLoad passen.

+0

oh man - das war offensichtlich :-) Größtes "DUH !!!" des Tages. Kannst du seine letzte 23:00 Uhr sagen? Ich bin offensichtlich hirntot und sollte wirklich den Sack drücken und es für den Tag beenden. So oder so: Danke! – Sirab33

0

Versuchen Sie, die Einschränkungen in der Methode viewDidAppear() zu protokollieren.

Verwandte Themen