ScrollView со встроенной проблемой StackView - PullRequest
0 голосов
/ 28 марта 2019

У меня есть scrollView с stackView.scrollView ограничено rootview.Представление стека покажет представление xib.

Представления xib имеют различную длину.Виды xib помечены simpleVC0 и simpleVC1.Длина simpleVC0 равна 2500, а длина simpleVC1 равна 1000.

Моя проблема в том, что когда представления xib представлены в виде стека, длина scrollView не изменяется надлина представленного xib вида.Это похоже на представление xib, но представление прокрутки заблокировано на определенной длине.

Вот simpleVC0 xib view.сопровождается этим, когда бежит.Когда я пытаюсь прокрутить, это не позволяет мне прокрутить до нижней части представления XIB.кажется, что отрезать XIB вид на определенной длине.Правильно ли говорить, что это, возможно, проблема, которая может быть решена в коде?или это может быть решено в душе ограничений.Я пробовал автоматические ограничения макета, но они не сработали.

enter image description here

enter image description here An example of how far down i can scroll (note the xib view is cut off as it only shows a certain amount of green.) enter image description here

enter image description here

Я ограничил scrollView до rootview со всех четырех сторон.Когда загружено корневое представление, xibs устанавливаются с использованием следующего кода:

    //Different subViews for ingredients and steps
    if counter == 0 {
        simpleViewX = SimpleVC0().view
        simpleViewY = SimpleVC1().view
        stack.addArrangedSubview(simpleViewX)
        stack.addArrangedSubview(simpleViewY)
    }

Представления являются скрытыми, отображаемыми путем изменения значения контроллера сегментированного представления.Показано ниже:

    @IBAction func tabselected(_ sender: Any) {
    switch (sender as AnyObject).selectedSegmentIndex {
    case 0:
        simpleViewY.isHidden = true
        simpleViewX.isHidden = false

        break
    case 1:
        simpleViewX.isHidden = true
        simpleViewY.isHidden = false

        break
    case 2:
        //calledvideo in array is the value of the counter.
        calledVideo = vids[counter]
        geturl()
        break
    default:
        break
    }
    }

Ответы [ 2 ]

1 голос
/ 28 марта 2019

Чтобы использовать UIStackView с UIScrollView, необходимо разрешить представлению стека увеличивать его высоту в зависимости от его содержимого.

Размещая его в раскадровке, дайте стековому представлению ограничение высоты (чтобы удовлетворить требованиям IB), но присвойте этому ограничению высоты низкий приоритет.

Затем при добавлении упорядоченных подпредставлений представление стека будет расти вертикально.

Вот полный пример, основанный на изображениях, которые вы показали: https://github.com/DonMag/XIBsInScrollView

0 голосов
/ 28 марта 2019

Вы должны изменить свойство contentSize вашего scrollView в коде.Я не знаю, как справиться с этим с раскадровками, но вы можете создать выход из своего scrollView и рассчитывать новую высоту каждый раз, когда она меняется (каждый раз, когда вы что-то добавляете или удаляете в ней)

scrollView.contentSize = CGSize(width:yourNewW, height:yourNewH)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...