如何将子视图与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(值(,但我认为这不是最好的方法,尤其是当我有很多控件时。
谢谢。
首先,创建一个子视图以添加所有表单控件:
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);
...
);
我没有测试这些代码中的任何一个,所以它可能在某个时候是错误的,但你明白了。。。