如何将子视图与Xamarin iOS Fluent Layout居中对齐

本文关键字:Layout Fluent 对齐 iOS Xamarin 视图 | 更新日期: 2023-09-27 18:01:10

我的代码如下:

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)
);

使用"nameTextField.AtTopOf(视图,10(,表单显示在顶部屏幕上。但现在,我需要垂直对齐视图中的所有控件(名称、密码和按钮(。

我该怎么做?

我已经尝试过用所有控件的边距求和高度,并使用.WithCenterY(视图(.Minus(值(,但我认为这不是最好的方法,尤其是当我有很多控件时。

谢谢。

如何将子视图与Xamarin iOS Fluent Layout居中对齐

首先,创建一个子视图以添加所有表单控件:

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

formView视图中的那些元素创建约束:

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)
);

创建约束以使formView在屏幕上居中:

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

我没有测试这些代码中的任何一个,所以它可能在某个时候是错误的,但你明白了。。。