Контекст
Я пытаюсь создать UIStackView программно, но он вообще не отображается.
Для тестирования я создал 2 маленьких UIView
, которые добавляю в UIStackView
.
Я пытался
- Добавление ограничений на
UIStackView
- Использование
layoutIfNeeded
- Использование
layoutSubviews
Но ничего не работает.
Код
import UIKit
class ViewController: UIViewController {
var contentStack = UIStackView()
@IBOutlet weak var mainScroll: UIScrollView!
override func viewDidLoad() {
super.viewDidLoad()
contentStack.backgroundColor = #colorLiteral(red: 0.05882352963, green: 0.180392161, blue: 0.2470588237, alpha: 1)
contentStack.axis = .vertical
contentStack.spacing = 0
contentStack.alignment = .top
contentStack.distribution = .equalSpacing
let a_view = UIView(frame: CGRect(x: 0, y: 0, width: 20, height: 30))
a_view.backgroundColor = #colorLiteral(red: 0.4666666687, green: 0.7647058964, blue: 0.2666666806, alpha: 1)
contentStack.addArrangedSubview(a_view)
let b_view = UIView(frame: CGRect(x: 0, y: 0, width: 50, height: 40))
b_view.backgroundColor = #colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
contentStack.addArrangedSubview(b_view)
mainScroll.addSubview(contentStack)
contentStack.topAnchor.constraint(equalTo: mainScroll.topAnchor).isActive = true
contentStack.leftAnchor.constraint(equalTo: mainScroll.leftAnchor).isActive = true
contentStack.bottomAnchor.constraint(equalTo: mainScroll.bottomAnchor).isActive = true
contentStack.rightAnchor.constraint(equalTo: mainScroll.rightAnchor).isActive = true
mainScroll.contentSize = CGSize(width: self.view.frame.width, height: contentStack.frame.height)
print("Stack Content Size: (\(contentStack.frame.width), \(contentStack.frame.height))");
}
}
Выход
![Output](https://i.stack.imgur.com/qthxG.jpg)
Вопрос
После прочтения документации, я предполагаю, что высота и ширина UIStackView
адаптируются в соответствии с элементами, содержащими размер представления стека после добавления представления, это Stack Content Size: (0.0, 0.0)
?