2017-01-27 11 views
1

Abstand von Taste unten auf dem Bildschirm erhalte ich den Abstand einer Taste an der Unterseite des Bildschirms in Swift 3.Swift 3:

Ich kann erhalten wollen sehen, den richtigen Wert im Storyboard, wenn ich mir anschaue, die Entfernung (Alt-Taste) kann ich leider nicht manuell berechnen.

Der Wert, nach dem ich suche, ist derselbe wie die Konstante in der Einschränkung "Vertikaler Abstand zu unterem Layout" für die Schaltfläche.

view.frame.maxY - randomButton.frame.maxY 

gab mir einen Wert viel zu hoch.

+1

Fügen Sie bitte ein bisschen mehr Code hinzu, wie * wo * diese einzelne Zeile ist. Je nachdem, wo es ist - wie viewDidLoad() - könnten Sie tatsächlich einen negativen Wert erhalten. – dfd

+0

Was ich gesagt habe, versuchen Sie tatsächlich zu tun? Es klingt, als ob Sie eine andere Ansicht zwischen der Schaltfläche und dem unteren Bildschirmrand platzieren möchten. In diesem Fall sollten Sie automatische Layout- oder Stapelansichten verwenden. – Fogmeister

+0

Der Code ist viewDidLoad – Michael

Antwort

2
view.frame.size.height - (button.frame.size.height + button.frame.origin.y) 

Ich denke, es ist in Ordnung! Hoffe, es hilft

0

verwenden es von unten nach unten auf den Button der Ansicht zu haben (getestet):

view.frame.size.height - randomButton.frame.size.height/2 - randomButton.frame.origin.y 
+0

warum Höhe/2? –

+0

Das ist, wenn sein Ursprung in der Mitte ist! wenn es an der Spitze wäre, wäre es nur Höhe, und wenn es an der Unterseite war, sollten Sie nichts von der Höhe abziehen. –

3

Wenn Taste kein direkter Nachfolger des nach Ansicht der View-Controller ist (auch bekannt als , die Hierarchie ist etwas wie ViewControllers View -> SomeOtherView-> Button), Sie erhalten nicht die richtige Mathematik, indem Sie einfach Frames verwenden. Sie müssen die Y-Position der Schaltfläche in den Koordinatenraum des Fensterobjekts oder die Hauptansicht Ihres Ansichtscontrollers übersetzen.

Werfen Sie einen Blick auf diese Frage: Convert a UIView origin point to its Window coordinate system

let realOrigin = someView.convert(button.frame.origin, to: self.view) 

die Mathematik Dann bewerben Sie von Lucas Palaian vorgeschlagen.

let bottomSpace = view.frame.maxY - (button.frame.height + realOrigin.y) 

Eine weitere Arbeit um, falls etwas wirklich wild und wierd ist dort passiert, ist ein Auslass der Schaltfläche unten Einschränkung zu ziehen. (Wählen Sie die Abhängigkeit aus der Ansichtshierarchie in Interface Builder aus, halten Sie die Strg-Taste gedrückt und ziehen Sie die Abhängigkeit auf Ihren Ansichtscontroller.) Dann können Sie in Ihrem Code auf die Konstante zugreifen.

let bottomSpace = myButtonBottomConstraint.constant