Я прикрепил представление стека в левом верхнем углу родительского элемента и специально не указал ширину.
Я ожидаю, что представление стека будет использовать ширину самого большого подпредставления в качестве своей ширины. Как указано в документе 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
Мобильная версия