2016-08-07 35 views
0

Mein Code ist wie folgt:.Wie werden Unteransichten in der Mitte mit Xamarin iOS Fluent Layout ausgerichtet?

var nameTextField = new UITextField(); 
var passwordTextField = new UITextField(); 
var loginButton = new UIButton(); 

//Bindings with MvvmCross... 

Add(nameTextField); 
Add(passwordTextField); 
Add(loginButton); 

View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints(); 

View.AddConstraints(
    nameTextField.AtTopOf(View, 10), 
    nameTextField.AtLeftOf(View, 10), 
    nameTextField.AtRightOf(View, 10), 
    passwordTextField.Below(nameTextField, 10), 
    passwordTextField.WithSameLeft(nameTextField), 
    passwordTextField.WithSameRight(nameTextField), 
    loginButton.Below(passwordTextField, 30), 
    loginButton.WithSameLeft(passwordTextField), 
    loginButton.WithSameRight(passwordTextField) 
); 

Mit „nameTextField.AtTopOf (Ansicht, 10), die Form auf dem oberen Bildschirm angezeigt wird, aber jetzt muss ich alle Steuerelemente ausrichten vertikal (Name, Passwort und Taste) in der Ansicht.

Wie kann ich das tun?

ich schon versucht, die Höhe mit den Rändern aller Kontrollen zusammenzufassen und verwenden .WithCenterY (View) .Minus (Wert), aber ich denke, das ist nicht der beste Weg, besonders wenn ich viele Kontrollen habe.

Danke.

Antwort

2

zunächst eine Subview erstellen alle Formular-Steuerelemente hinzufügen:

var formView = new UIView(); 
formView.AddSubviews(nameTextField, passwordTextField, loginButton); 

erstellen Einschränkungen für diese Elemente innerhalb der formView Ansicht:

formView.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints(); 

formView.AddConstraints(
    nameTextField.AtTopOf(formView, 10), 
    nameTextField.AtLeftOf(formView, 10), 
    nameTextField.AtRightOf(formView, 10), 
    passwordTextField.Below(nameTextField, 10), 
    passwordTextField.WithSameLeft(nameTextField), 
    passwordTextField.WithSameRight(nameTextField), 
    loginButton.Below(passwordTextField, 30), 
    loginButton.WithSameLeft(passwordTextField), 
    loginButton.WithSameRight(passwordTextField) 
); 

Einschränkungen erstellen formView auf dem Bildschirm zu zentrieren:

View.SubviewsDoNotTranslateAutoresizingMaskIntoConstraints(); 

View.AddConstraints(
    formView.WidthOf(View), 
    formView.WithSameCenterY(View); 
    ... 
); 

Ich habe diesen Code nicht getestet Es ist wahrscheinlich falsch an einem Punkt, aber Sie bekommen die Idee ...

+0

Das Problem ist, dass der obere Teil der FormView auf die CenterY der Ansicht ausgerichtet war, so dass die Untersichten in der Mitte/unten gerendert wurde des Bildschirms. Ich muss den Mittelpunkt von FormView (mit den Subviews, die bereits hinzugefügt wurden) mit CenterY of View ausrichten. –

+0

Versuchen Sie 'formView.WithSameCenterY (View)' – xleon

+0

Ich schaffte es, dies zu tun, die Zwangsordnung zu ändern. First View.AddConstraints ... und sie formView.AddConstraints ... und das Wichtigste ist, dass eine Höhe für die FormView definiert wird, die größer oder gleich der Summe aller Untersichtenhöhen und -ränder ist. Eine rote Hintergrundfarbe in der FormView ist hilfreich, um einige Tests durchzuführen. Vielen Dank! –