Я впервые работаю с языком визуального формата, и я пытаюсь программно выровнять две кнопки по горизонтали, а затем выровнять эти две кнопки по вертикали.
Мой текущий подход заключается в том, чтобы поместить две кнопки в какой-то контейнерв этом контейнере выровняйте их по горизонтали, а затем выровняйте по вертикали этот контейнерный вид в главном окне, но это приведет к горизонтальному выравниванию моих кнопок в одном месте, а затем к вертикальному выравниванию моего контейнера в другом месте.
Здесьмой текущий подход:
var views = new NSMutableDictionary();
viewDidLoad()
:
views.Add(new NSString("questionTextView"), QuestionTextView);
...
UIButton button1 = new UIButton();
UIButton button2 = new UIButton();
UIView containerView = new UIView(new CGRect(0, 0, 500, 100));
views.Add(new NSString("containerView"), containerView);
containerView.TranslatesAutoresizingMaskIntoConstraints = false;
View.AddSubview(containerView);
var textViewCenter = NSLayoutConstraint.FromVisualFormat(
format: "|-[containerView]-|",
formatOptions: NSLayoutFormatOptions.AlignAllCenterX,
metrics: null,
views: views
);
NSLayoutConstraint.ActivateConstraints(textViewCenter);
addButton(button1, new NSString("button1"), containerView);
addButton(button2, new NSString("button2"), containerView);
addQuestionViewContraints();
addTwoButtonConstraints();
adjustQuestionView();
Соответствующие функции:
public void addButton(UIButton button, NSString buttonIdentifier, UIView containerView){
button = new UIButton(new CGRect(0, 0, 200, 100));
button.TranslatesAutoresizingMaskIntoConstraints = false;
button.SetTitle(buttonText, UIControlState.Normal);
containerView.AddSubview(button);
views.Add(buttonIdentifier, button);
}
public void addTwoButtonConstraints()
{
var twoButtonHorizontalConstraints = NSLayoutConstraint.FromVisualFormat(
format: "|-[button1]-[button2]-|",
formatOptions: NSLayoutFormatOptions.AlignAllTop,
metrics: null,
views: views
);
NSLayoutConstraint.ActivateConstraints(twoButtonHorizontalConstraints);
var verticalAlignment = NSLayoutConstraint.FromVisualFormat(
format: "V:|-[questionTextView]-(>=100)-[containerView(>=100)]-(>=50)-|",
formatOptions: NSLayoutFormatOptions.AlignAllCenterX,
metrics: null,
views: views
);
NSLayoutConstraint.ActivateConstraints(verticalAlignment);
}
public void addQuestionViewContraints(){
QuestionTextView.TranslatesAutoresizingMaskIntoConstraints = false;
var textViewCenter = NSLayoutConstraint.FromVisualFormat(
format: "|-[questionTextView]-|",
formatOptions: NSLayoutFormatOptions.AlignAllCenterX,
metrics: null,
views: views
);
NSLayoutConstraint.ActivateConstraints(textViewCenter);
}
Я думаю, что, поскольку представление контейнера заканчиваетсяправильное выравнивание, а поскольку кнопки выровнены по горизонтали должным образом, моя проблема заключается в том, что мои кнопки не становятся должным образом частью containerView.Спасибо за понимание.