Мне нужно прокрутить плавающий (фиксированный) UIView в моей раскадровке после определенной точки в UIScrollView - PullRequest
0 голосов
/ 05 июля 2019

В моей раскадровке у меня есть родитель UIScrollView, в котором у меня UIView роста около 2000px .

Я спроектировал весь вид и поместил еще один UIView внизу родительского вида прокрутки, чтобы он был зафиксирован в пользовательском интерфейсе. Но в конкретный момент мне нужно поместить этот UIView (i.e.fixed) для прокрутки. Как и после того, как я прокручиваю UILabel, я хочу прокрутить это UIView ниже этого и исчезнуть снизу.

red area is my fixed UIView

Я знаю, что это трудно объяснить, но я застрял в этом так долго.

P.S. Я пользуюсь AutoLayout.

1 Ответ

0 голосов
/ 05 июля 2019

В этом случае, вероятно, лучше иметь вид за пределами вида с прокруткой, но также связывать ограничения и с внутренним видом.Вы используете приоритеты для управления этими ограничениями.

В вашем случае вы снизите приоритет нижнего ограничения (например, до 500).И вы бы добавили ограничение как outsideView.top <= insideView.bottom.Поэтому подключите внешний вид к одному из представлений внутри вида прокрутки и создайте отношение, которое будет меньше (или больше, если 2 элемента перевернуты) или равно этой точке обзора.

Чтобы создать демонстрацию этого запускановый проект и откройте Main.storyboard:

  • Добавьте представление прокрутки с ограничениями на начало, конец, верх, низ
  • Добавьте пробел UIView (теперь называется innerView) в представлении прокрутки и добавьте начальные, конечные, верхние и нижние ограничения
  • Добавьте ограничение высоты к innerView до 2000
  • Добавьте ограничение равной ширины между innerView и вашим представлением прокрутки
  • Установить нижнее ограничение между innerView и прокруткой на 100
  • Установить отдельный цвет на innerView, чтобы увидеть эффект
  • Все остальные ограничения должны быть установлены на 0
  • Добавьте еще один UIView на верхнем уровне (теперь он называется outerView)
  • Прикрепите внешний вид вперед, сзади и снизу.Также добавьте ограничение высоты к 50
  • Установите отдельный цвет на outerView, чтобы увидеть эффект.

К настоящему времени у вас должен быть прокручиваемый вид прокрутки и фиксированный вид навнизу, если вы запустите приложение.

  • Теперь подключите outerView с innerView и выберите «вертикальный интервал»
  • Дважды щелкните по вновь созданному ограничению и измените его:
  • (При необходимости) Поменять местами первый и второй элемент, чтобы внешний вид был первым элементом
  • Изменить отношение на «меньше или равно»
  • (При необходимости) выбрать externalView.top
  • (При необходимости) выберите innerView.bottom
  • Установить константу равной нулю
  • Выберите outerView и найдите нижнее ограничение для безопасной области (или суперпредставления) и установите его приоритет 500.

Теперь запустите приложение.Если все правильно, ваш фиксированный вид будет исправлен, пока вы не прокрутите достаточно далеко.После отображения 2000 пикселей фиксированный вид будет прокручиваться с видом прокрутки.

Вы можете прикрепить его к любому представлению в представлении прокрутки, чтобы получить любой возможный эффект, который вам нужен.

Надеюсь, это описательныйдовольно.Удачи.

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