Отключить прокрутку определенного стека в UIStackView - PullRequest
3 голосов
/ 16 октября 2019

Я пытаюсь этот метод использования UIScrollView и UIStackView для добавления нескольких дочерних VC.

Первый childVC в моем вертикальном stackView представляет собой простой набор меток и имеет высоту около150 баллов.

Второй childVC под первым childVC - это collectionView с расширяемым источником данных и стилем композиционной компоновки, который делает его похожим на tableView с метками и текстовым представлением в каждой ячейке. Содержание этого второго childVC будет увеличиваться по мере того, как пользователи будут добавлять больше данных.

Я хочу либо:

  • Установить первый childVC, закрепленный сверху, чтобы он не прокручивался;или
  • закрепите первый childVC вторым childVC, чтобы они прокручивались вместе.

Прямо сейчас, когда я прокручиваю только там, где находится второй childVC, тогда второй childVC будет прокручиваться, оставляяпервый childVC, где это было (в верхней части представления). Но второй childVC не будет прокручиваться до конца списка (ячейки попадают за мой tabBarController). Так что, если я хочу прокрутить весь список до конца, чтобы увидеть полный список, мне нужно прокрутить с первого раза childVC.

Но все становится просто так, потому что появляются два индикатора прокрутки и если я хочу прокрутитьвверх и вниз, я должен поиграть с индикатором прокрутки, и весь этот процесс прокрутки становится кошмаром

Оба дочерних VC имеют отдельный подкласс представления. Так, например:

class FirstChildVC: UIViewController {
    var firstChildView: FirstChildView!

    override func viewDidLoad() {
        super.viewDidLoad()
        firstChildView = FirstChildView()
        view.addSubView(firstChildView)
    }
    private func configure() {
        firstChildView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            firstChildView.topAnchor.constraint(equalTo: view.topAnchor),
            firstChildView.bottomAnchor.constraint(equalTo: view.bottomAnchor, constant: view.frame.height),
            firstChildView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            firstChildView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            firstChildView.heightAnchor.constraint(equalToConstant: view.frame.height)
        ])
    }

И второй childVC почти такой же, за исключением следующих ограничений:

    func configure() {
        secondChildView.translatesAutoresizingMaskIntoConstraints = false
        NSLayoutConstraint.activate([
            secondChildView.topAnchor.constraint(equalTo: view.topAnchor, constant: 150),
            secondChildView.bottomAnchor.constraint(equalTo: view.bottomAnchor),
            secondChildView.leadingAnchor.constraint(equalTo: view.leadingAnchor),
            secondChildView.trailingAnchor.constraint(equalTo: view.trailingAnchor),
            secondChildView.heightAnchor.constraint(equalToConstant: view.frame.height)
        ])
    }

Если я не установлю topAnchors и / или heightAnchors длявот так выглядят childView, stackView перекрывается ... что я нахожу странным, потому что я думал, что весь смысл stackView состоит в том, чтобы складывать горизонтально или вертикально, и каждый добавленный организованный SubView имеет свой собственный contentView.

Как я могу исправитьчтобы я мог прокручивать первый childVC и второй childVC вместе, вместо того, чтобы у каждого был свой собственный индикатор прокрутки?

edit: это экранная запись того, что я имел в виду под фанки-прокруткой. edit2: я обнаружил, что проблема с этим причудливым поведением заключается в том, что мой второй childVC динамически увеличивается по мере того, как пользователи добавляют больше данных. Прямо сейчас, ограничения представления второго childVC установлены на якоря представления, а ограничение высоты установлено на view.frame.height, потому что не установка ограничения высоты не загружает представление ... я не знаю почему. Но, если я установлю ограничение высоты на что-то сумасшедшее, например view.frame.height * 5, я получу желаемый результат, так как в нем нет отдельного индикатора прокрутки для второго childVC. Но поскольку этот VC динамически изменяется по высоте, установка постоянной высоты - ужасная идея, и я хочу, чтобы высота увеличивалась по мере добавления / удаления данных. Есть идеи? Должен ли я разместить отдельный вопрос для этого? (новинка в стеке переполнена .. извините)

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