TableView, созданный с помощью кода представления, не прокручивается до конца содержимого - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь создать представление с горизонтальным стеком с двумя кнопками в первой строке и таблицей во второй.Эта таблица может увеличить ее высоту, и моя проблема в том, что когда высота таблицы слишком высока, кнопки перемещаются за пределы экрана сверху, и я не могу прокрутить таблицу до ее нижней части.Как я могу правильно установить ограничения, чтобы это произошло?когда высота стола слишком велика, он должен только создать прокрутку, а не перемещать другие компоненты.Не могли бы вы, ребята, помочь мне?

Здесь я обновляю высоту стола.

   func updateTableHeight() {
        UIView.animate(withDuration: 0, animations: {
            self.tableView.layoutIfNeeded()
        }) { (complete) in
            self.heightOfTableViewConstraint?.constant = self.tableView.contentSize.height
        }
    } 

Здесь я настраиваю все ограничения:

private func setUpViewConstraints() {
        tableView.translatesAutoresizingMaskIntoConstraints = false
        goToNextPageButton.translatesAutoresizingMaskIntoConstraints = false
        goToPreviousPageButton.translatesAutoresizingMaskIntoConstraints = false
        buttonsStackView.translatesAutoresizingMaskIntoConstraints = false
        mainStackView.translatesAutoresizingMaskIntoConstraints = false
        view.backgroundColor = .black
        let viewsDictionary: [String: Any] = ["tableView": tableView,
                                              "goToNextPageButton": goToNextPageButton,
                                              "goToPreviousPageButton": goToPreviousPageButton,
                                              "mainStackView": mainStackView,
                                              "buttonsStackView": buttonsStackView]

        let mainStackViewHorizontalConstraints =
            NSLayoutConstraint.constraints(withVisualFormat: "H:|-40-[mainStackView]-40-|",
                                           options: NSLayoutFormatOptions(rawValue: 0),
                                           metrics: nil, views: viewsDictionary)
        let mainStackViewVerticalConstraints =
            NSLayoutConstraint.constraints(withVisualFormat: "V:[mainStackView]",
                                           options: NSLayoutFormatOptions(rawValue: 0),
                                           metrics: nil, views: viewsDictionary)

        let buttonsStackViewVerticalConstraints =
            NSLayoutConstraint.constraints(withVisualFormat: "V:|-20-[buttonsStackView]",
                                           options: NSLayoutFormatOptions(rawValue: 0),
                                           metrics: nil, views: viewsDictionary)

        let buttonsStackViewHorizontalConstraints =
            NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[buttonsStackView]-0-|",
                                           options: NSLayoutFormatOptions(rawValue: 0),
                                           metrics: nil, views: viewsDictionary)

        let tableViewViewHorizontalConstraints =
            NSLayoutConstraint.constraints(withVisualFormat: "H:|-0-[tableView]-0-|",
                                           options: NSLayoutFormatOptions(rawValue: 0),
                                           metrics: nil, views: viewsDictionary)

        buttonsStackView.addConstraint(NSLayoutConstraint(item: goToPreviousPageButton,
                                              attribute: .height,
                                              relatedBy: .equal,
                                              toItem: nil,
                                              attribute: .height,
                                              multiplier: 1,
                                              constant: 80))

        buttonsStackView.addConstraint(NSLayoutConstraint(item: goToNextPageButton,
                                              attribute: .height,
                                              relatedBy: .equal,
                                              toItem: nil,
                                              attribute: .height,
                                              multiplier: 1,
                                              constant: 80))

        view.addConstraint(NSLayoutConstraint(item: mainStackView,
                                              attribute: .top,
                                              relatedBy: .equal,
                                              toItem: view,
                                              attribute: .top,
                                              multiplier: 1,
                                              constant: 40))

        view.addConstraints(mainStackViewHorizontalConstraints)
        view.addConstraints(mainStackViewVerticalConstraints)
        view.addConstraints(buttonsStackViewHorizontalConstraints)
        view.addConstraints(buttonsStackViewVerticalConstraints)
        mainStackView.addConstraints(tableViewViewHorizontalConstraints)
    }
...