UIStackView использует ширину наименьшего упорядоченного представления вместо наибольшего.IOS

Программируем под IOS
Ответить
Anonymous
 UIStackView использует ширину наименьшего упорядоченного представления вместо наибольшего.

Сообщение Anonymous »

Я создал простое вертикальное представление стека, содержащее 3 подпредставления разной ширины.
Я прикрепил представление стека в левом верхнем углу родительского элемента и специально не указал ширину.
Я ожидаю, что представление стека будет использовать ширину самого большого подпредставления в качестве своей ширины. Как указано в документе Apple: https://developer.apple.com/documentati ... istackview
Цитата:

Перпендикулярно оси стекового представления, его размер равен размеру самого большого упорядоченного представления.

но результат выглядит так, как будто стековое представление использует ширина наименьшего подпредставления.
Изображение

Я использую .fill для выравнивания, но, судя по его описанию https://developer.apple.com/documentati ... nment/fill, я не понимаю, как это влияет на представление стека при использовании наименьшее подпредставление.
Я не понимаю, почему код ведет себя таким образом.
Вот мой код:
import Foundation
import UIKit
import SwiftUI
import SnapKit

class TestViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
view.backgroundColor = .white

// Create the stack view with a vertical axis
let stackView = UIStackView()
stackView.axis = .vertical
stackView.backgroundColor = .gray
stackView.spacing = 20
stackView.alignment = .fill // Change this to .leading to see the effect
stackView.translatesAutoresizingMaskIntoConstraints = false

// Add the stack view to the view controller's view
view.addSubview(stackView)

// Constraints for the stack view
stackView.snp.makeConstraints { make in
make.top.equalTo(view)
make.left.equalTo(view)
}

// Create three views with different widths
let view1 = UIView()
view1.translatesAutoresizingMaskIntoConstraints = false
view1.backgroundColor = .red
view1.snp.makeConstraints { make in
make.width.equalTo(100)
make.height.equalTo(50)
}

let view2 = UIView()
view2.translatesAutoresizingMaskIntoConstraints = false
view2.backgroundColor = .green
view2.snp.makeConstraints { make in
make.width.equalTo(200)
make.height.equalTo(50)
}

let view3 = UIView()
view3.translatesAutoresizingMaskIntoConstraints = false
view3.backgroundColor = .blue
view3.snp.makeConstraints { make in
make.width.equalTo(300)
make.height.equalTo(50)
}

// Add views to the stack view
stackView.addArrangedSubview(view2)
stackView.addArrangedSubview(view1)
stackView.addArrangedSubview(view3)
}

}

struct TestViewControllerTestView : UIViewControllerRepresentable {

typealias UIViewControllerType = TestViewController

func makeUIViewController(context: Context) -> TestViewController {
return TestViewController()
}

func updateUIViewController(_ uiViewController: UIViewControllerType, context: Context) {

}
}

struct TestViewController_Preview : PreviewProvider {
static var previews: some View {
TestViewControllerTestView()
}
}



Подробнее здесь: https://stackoverflow.com/questions/786 ... of-largest
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «IOS»