2016-08-07 16 views
0

私のコードは次のようである:「nameTextField.AtTopOf(ビュー、10)でXamarin iOS Fluent Layoutで中央のサブビューを並べる方法は?

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

、フォームは、トップ画面に表示されている。しかし、今、私は垂直方向にすべてのコントロール(名前、パスワードを揃える必要があります。そして、ビューのボタン)。

私はこれをどのように行うことができますか?

は、私はすでに、すべてのコントロールのマージンと高さを合計し、.WithCenterY(ビュー).Minus(値)を使用しようとしましたが、私は思いますそれは、特に私が多くのコントロールを持っているときに、最良の方法ではありません。

ありがとうございます。

答えて

2

まず、すべてのフォームコントロールを追加するには、サブビューを作成します。

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

私はこのコードをテストしませんでしただから、間違っていると思うかもしれませんが、どういう意味かは分かりません。

+0

問題は、formViewのトップがViewのCenterYにアライメントされているため、サブビューが中間/画面の私はビューのCenterYでformViewの中心(すでに追加されたサブビューを持つ)を整列させる必要があります。 –

+0

'formView.WithSameCenterY(View) 'を試してください – xleon

+0

私はこの作業を制約の順序を変更することができました。最初のView.AddConstraints ...とformView.AddConstraints ...最も重要なのは、すべてのサブビューの高さとマージンの合計以上のformViewの高さを定義することです。 formViewの赤い背景色は、いくつかのテストを行うのに役立ちます。ありがとう! –

関連する問題