КАК РАБОТАТЬ С ПРОКРУТКАМИ
- Ваш
navigation bar
всегда будет вверху с высотой 44px
и верхним пространством 20px
(верхнее 20px
предназначено для строки состояния, т. е. значка зарядки, сети и т. д., который вы видите на своем устройстве).
Причина исправления navigation bar
в верхней части состоит в том, что, где бы пользователь ни находился в ВК, вы всегда должны показывать ему, в какой ВК он присутствует в данный момент времени, иначе качество вашего приложения может ухудшиться (я сказал, может быть). В конце концов, вы можете добавить navigation Bar
в UIScrollView
по вашему выбору.
Верхний зеленый вид, который вы видите, я просто беру вид как statusBar
высоты 20px
, чтобы показать разницу.
![введите здесь описание изображения](https://i.stack.imgur.com/7HCe9.png)
Теперь добавьте UIScrollView
в оставшуюся часть ViewController
и задайте следующие ограничения:
- top to navgationBar
0px
- Ведущий, ведомый, нижний для супервизора как
0
.
Теперь ваш VC будет таким, как показано ниже. Красная точка, указывающая, что ограничение может отсутствовать. Не беспокойтесь об этом, пока ваши компоненты внутри UIScrollView
не будут установлены должным образом, это покажет вам ту же ошибку.
![введите здесь описание изображения](https://i.stack.imgur.com/R1fzI.png)
Теперь добавьте UIView
в свой UIScrollView
(говорит viewMain) и задайте такие ограничения
- top, bottom, leading, trailing to
scrollview
as 0
- Равной вам ширины
viewVC
. viewVC
это вид ВК. вы получаете этот вид, когда берете новый UIViewController
. Теперь ваш пользовательский интерфейс будет похож на
![введите здесь описание изображения](https://i.stack.imgur.com/S9DEi.png)
и ваша иерархия представлений будет выглядеть
здесь я предполагаю, что вы просто прокручиваете свой вид в вертикальном направлении, а не в горизонтальном направлении.
![введите здесь описание изображения](https://i.stack.imgur.com/Z84hK.png)
Теперь я собираюсь добавить 5 видов разной высоты в scrollview
, посмотрите.
Добавьте представление в viewMain
(говорит viewYellow) и задайте ограничение ниже;
- top, leading trailing to
mainView
as 0px
- высота
180px
![введите здесь описание изображения](https://i.stack.imgur.com/jBxL3.png)
Теперь ваш пользовательский интерфейс будет похож на
![введите здесь описание изображения](https://i.stack.imgur.com/FKDdd.png)
Теперь так же, как step 4
, добавьте еще четыре вида (viewGreen, viewBlue, viewRed, viewPurple) и задайте ограничения, как показано ниже.
viewGreen :
1. top to viewYellow
0px
2. leading trailing to mainView
as 0px
and 3. height 150px
.
viewBlue :
1. top to viewGreen
0px
2. leading trailing to mainView
as 0px
and 3. height 80px
.
viewBlue :
1. top to viewGreen
0px
2. leading trailing to mainView
as 0px
and 3. height 80px
.
viewRed :
1. top to viewBlue
0px
2. leading trailing to mainView
as 0px
and 3. height 140px
.
viewPurple :
1. top to viewRed
0px
2. leading trailing to mainView
as 0px
and 3. height 128px
. 4. bottom to mainView
0px
.
Теперь ваш пользовательский интерфейс и иерархия представлений будут такими, как показано ниже.
![введите здесь описание изображения](https://i.stack.imgur.com/jXwSo.png)
![введите здесь описание изображения](https://i.stack.imgur.com/U47vg.png)
Не беспокойтесь о viewPurple
, так как он мало отображается в UI
, но доступен в иерархии. это scrollView
и это очень безопасно. Видеть
![введите здесь описание изображения](https://i.stack.imgur.com/cavv8.png)
Примечание: В UIViewController
нет ошибок и предупреждений об ограничениях, потому что, как я уже сказал, когда вы правильно установите внутренний компонент scrollView
с ограничениями, ошибка ограничений будет решена.
Важно: как рассчитывается высота прокрутки
Когда вы устанавливаете ограничение каждого вида с ограничением сверху, снизу и по высоте на mainView
, поэтому высота mainView
рассчитывается по следующему уравнению
mainView.height = viewYellow.top + viewYellow.height + .... for all view + viewPurple.bottom
а высота scrollView
будет рассчитываться следующим образом:
scrollView.height = mainView.height
Однако каждый вид имеет постоянную высоту, поэтому высота вращения будет одинаковой.
Окончательный результат
портрет
![введите здесь описание изображения](https://i.stack.imgur.com/0pfYt.png)
Пейзаж
![введите здесь описание изображения](https://i.stack.imgur.com/tzpP8.png)
![введите здесь описание изображения](https://i.stack.imgur.com/esU2Q.png)
person
dahiya_boy
schedule
09.02.2017