C# 如何将中间的子视图与Xamarin iOS Fluent布局对齐?
我的代码如下:C# 如何将中间的子视图与Xamarin iOS Fluent布局对齐?,c#,xamarin,xamarin.ios,mvvmcross,cirrious.fluentlayout,C#,Xamarin,Xamarin.ios,Mvvmcross,Cirrious.fluentlayout,我的代码如下: var nameTextField = new UITextField(); var passwordTextField = new UITextField(); var loginButton = new UIButton(); //Bindings with MvvmCross... Add(nameTextField); Add(passwordTextField); Add(loginButton); View.SubviewsDoNotTranslateAutor
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),表单显示在顶部屏幕上。但是现在,我需要垂直对齐视图中的所有控件(名称、密码和按钮)
我该怎么做
我已经试着用所有控件的边距和use.WithCenterY(视图)。减号(值)求和高度,但我认为这不是最好的方法,尤其是当我有很多控件时
谢谢。首先,创建一个子视图以添加所有表单控件:
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);
...
);
我没有测试任何这段代码,因此在某些方面可能是错误的,但您知道了…首先,创建一个子视图以添加所有表单控件:
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);
...
);
我没有测试任何这段代码,因此在某些方面可能是错误的,但您会想到…问题是formView的顶部与视图的中心对齐,因此子视图呈现在屏幕的中间/底部。我需要对齐formView的中心(与已添加的子视图对齐)使用视图中心。尝试
formView。使用视图中心(视图)
我成功地改变了约束顺序。First View.AddConstraints…和它们formView.AddConstraints…最重要的是为formView定义一个大于或等于所有子视图高度和边距之和的高度。formView中的红色背景色有助于进行一些测试。谢谢问题是formView的顶部与视图的中心对齐,因此子视图呈现在屏幕的中间/底部。我需要将formView的中心(已添加子视图)与视图的中心对齐。请尝试formView。使用SameCentery(视图)
我成功地改变了约束顺序。First View.AddConstraints…和它们formView.AddConstraints…最重要的是为formView定义一个大于或等于所有子视图高度和边距之和的高度。formView中的红色背景色有助于进行一些测试。谢谢!