2016-04-14 6 views
0

Ich habe eine Hilfsansicht mit dynamischer Höhe in meinem Storyboard, das ist eine gängige Praxis, um Layout reagieren.Autolayout Zentrum y Ausrichtung seltsames Verhalten beim Einstellen Multiplikator

Allerdings passiert etwas seltsames, wenn ich Multiplikatoren einführe.

Die blaue Taste Mitte y zur weißen Ansicht links ausgerichtet: es

enter image description here

Ändern Multiplikatorwert in 0,5 sollte die Taste zur Mitte der ersten Hälfte des weißen Ansicht auszurichten, zumindest funktioniert auf diese Weise bei der Ausrichtung auf Superview.

Stattdessen beende ich mit etw so zusammen: enter image description here

Die blaue Taste Höhe bis 0,05 mal th Höhe des Super gleich ist. Die weiße Ansicht Höhe ist gleich 4 mal die Höhe der blauen Taste

Ich habe keine Ahnung, was das Problem ist, das diese seltsame Ausrichtung verursacht. Ich vermutete, dass es etwas mit dynamischem Höhenwert sein könnte, also habe ich versucht, einen expliziten Höhenwert zu setzen, aber das Ergebnis war genau das gleiche.

+0

Was ist die Höhe Ihrer weißen Ansicht? und blaue Taste? –

+0

Blaue Taste ist 0,05 mal die Höhe von superview und die weiße Ansicht ist 4 mal die Höhe der Taste – DCDC

+0

Ich brauche nur Höhe, die Sie x, y, Breite, Höhe sehen können. nicht multipliar. oder wenn Sie eine Demo haben, laden Sie sie bitte hoch. –

Antwort

3

Sie sagten, dass, wenn die Taste Center Y mit Multiplikator 0.5, als es an den 1/4 der weißen Ansicht positioniert werden soll .. Nein, das ist nicht so gearbeitet .. läßt es

Multiplikator arbeitet mit Gleichung überprüfen mit dieser Gleichung

FirstItem.Attribute1 = (SecondItem.Attribute2 * Multiplier) + Constant 

Ihre Einschränkung ist Button.Center Y = BlankView.center Y .. so ist dies, wie Gleichung

gefüllt
Button.Center Y = (BlankView.center Y * 1) + 0 

Die Frage ist also, was der Wert von BlankView.Center Y ... Antwort

BlankView.Center Y = HeightOfSuperviewOFBlankView - (Y positionOFBlankView + (BlankViewHeight/2)) 
// in your case it would be 603 - (483 +(120/ 2)) = 543 

Jetzt 0.5

Button.Center Y = (543 * 0.5) + 0 // 271.5 

auf Ihre Gleichung Center Y mit Multiplikator bewegen, weil der, dass Ihre Tastenposition mit Center Y ist platziert auf

Button.Center Y = 271.5 - (buttonHeight/2) 
    // if we take buttonHeight = 30 than it should be 257.5 (approx 257) 

Ich hoffe, jetzt verstehen Sie, wie Center Y mit Multi Zange arbeitet ...

+0

In Ordnung, das ist jetzt klar, warum es für Positionierung in Bezug auf Superview funktioniert, und warum es nicht für die Ansicht woanders ist! Deine Erklärung ist wirklich großartig und klärt die Verwirrung über Multiplikatoren! – DCDC