#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. Я не могу найти то же самое.