我有一个UIScrollView,它有一个UIStackView子视图,称之为堆栈.我想在堆栈中拥有动态数量的子视图,但这些子视图将具有不同的高度.我怎样才能做到这一点?请注意,我正试图回避故事板..
let scrollView = UIScrollView(frame: CGRect(x: 20,y: 20,width: view.frame.width - 20,height: view.frame.height - 20)) scrollView.center = view.center self.view.addSubview(scrollView) let stack = UIStackView(frame: CGRect(x: 20,width: scrollView.frame.width - 40,height: scrollView.frame.height - 40)) stack.axis = .vertical stack.alignment = .fill stack.distribution = .fillProportionally stack.spacing = 20 scrollView.addSubview(stack) let label1 = UILabel() label1.text = "This is going to be very,very long. I don't know how to make this guy longer. Words and words and more words. // Do any additional setup after loading the view,typically from a nib." label1.numberOfLines = 0 label1.sizeToFit() // Add more labels similar to label1
我尝试在每个UILabel子视图中添加一个约束,但它确实不起作用..
let x = NSLayoutConstraint(item: label1,attribute: .height,relatedBy: .equal,toItem: nil,attribute: .notAnAttribute,multiplier: 1,constant: label1.frame.size.height) label1.addConstraint(x)
请帮忙!谢谢.
解决方法
尝试更改堆栈视图的分发模式:
stack.distribution = .fillProportionally
(我不确定这是不是正确的,如果它不只是尝试所有不同的分配模式:))