Как программно добавить вертикальное или горизонтальное представление стека в представление

#c# #xcode #xamarin #monodevelop

Вопрос:

Я могу программно добавить вертикальный и горизонтальный вид стека в свой основной вид, но этот вид не выполняет компоновку типа стекирования.

Вот что у меня есть до сих пор:

 // create vertical stack
var viewSize = new CGSize(200, 150);
var viewLocation = new CGPoint(0, 0);

var viewRectangle = new CGRect(viewLocation, viewSize);
var frame = new CGRect(0, 0, 200, 20);

var stackView = new NSStackView(viewRectangle);

var button1 = new NSButton(frame) {
    Title = "Button 1"
};

var frame2 = new CGRect(0, 10, 200, 20);
var button2 = new NSButton(frame2) {
    Title = "Button 2"
};

// show background to help see size and position
stackView.WantsLayer = true;
stackView.Layer.BackgroundColor = new CGColor(150, 0, 150, 1);

stackView.Orientation = NSUserInterfaceLayoutOrientation.Vertical;
stackView.Alignment = NSLayoutAttribute.Top;
stackView.Distribution = NSStackViewDistribution.Fill;
stackView.Spacing = 10;

stackView.AddSubview(button1);
stackView.AddSubview(button2);
stackView.NeedsLayout = true;

frame1.AddSubview(stackView);
 

Скриншот ниже.

Вид сверху-это вертикальный стек, созданный вручную в конструкторе интерфейсов. Внизу находится программный, созданный на основе приведенного выше кода:

введите описание изображения здесь

Обновить:

Я нашел несколько примеров кода в документации Xamarin для iOS:

https://docs.microsoft.com/en-us/xamarin/ios/user-interface/controls/uistackview

Есть некоторые свойства, которые я не могу найти, но некоторые из них работают.

Основное отличие заключается в том, что вам нужно использовать метод addArrangedSubViews() вместо метода addSubviews ().

 stackView.AddArrangedSubview(button);
 

Visual Studio для Mac с использованием Xamarin и C#

Комментарии:

1. @гигаватты, Значит, вы решили свою проблему самостоятельно?

2. @CherryBu-MSFT я так думаю. Некоторые свойства все еще отсутствуют, но я, возможно, смогу обойтись. В стеке iOS есть свойство margin или edge. Я не могу найти то же самое.