XIB с UIView, содержащий UIStackview, не заполняет родительский контейнер - PullRequest
0 голосов
/ 12 марта 2019

Я пытаюсь получить UIView, который содержит UIStackView для горизонтального заполнения, с равными пропорциями.

Родительский вид - это UIScrollView, а пользовательский кадр UIView установлен на ширину scrollView.Тем не менее, ничего, что я сделаю, не заставит кнопки заполнить весь путь.Они просто собирают налево.

Image Truncated for the example

Я проверил ограничения и свойства представления стека.Но ничего.

Кроме того, кнопки даже неразрешимы.Так что я знаю, что я где-то напутал.

Может кто-нибудь увидеть, что я делаю неправильно?

enter image description here

Мой пользовательский класс DispatchView вызывает соответствующий XIB-файл.Вот это скриншот выше

class DispatchView: UIView {

    var view: UIView!
    required public init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
        loadViewFromNib()
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        loadViewFromNib()
    }

    func loadViewFromNib() {
        let nib = UINib(nibName: String(describing: type(of: self)), bundle: Bundle(for: type(of: self)))
        let view = nib.instantiate(withOwner: self, options: nil).first as! UIView
        addSubview(view)
        self.view = view
    }
}

Тогда в моем ViewController я называю DispatchView.

class ViewController: UIViewController {

    @IBOutlet weak var scrollView: UIScrollView!
    var dispatchView: DispatchView!

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view, typically from a nib.

        dispatchView = DispatchView(frame: CGRect(x: 0, y: 0, width: self.view.frame.width, height: 64))
        dispatchView.backgroundColor = .red
        scrollView.addSubview(dispatchView)

        scrollView.backgroundColor = .gray


        //Update scroll view content size
        var contentRect = CGRect.zero

        for view in scrollView.subviews {
            contentRect = contentRect.union(view.frame)
        }

        scrollView.contentSize = CGSize(width: scrollView.frame.size.width, height: contentRect.size.height + 64)

        scrollView.contentInsetAdjustmentBehavior = UIScrollView.ContentInsetAdjustmentBehavior.always
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...