2015-03-01 4 views
0

Моя проблема немного отличается от проблем друга «Swift UIScrollView» при использовании автоматической компоновки:Swift - UIScrollView Scrolls Частично

Проблема: В отличие от других, когда я запускаю мое приложение, она прокручивается. Моя проблема в том, что свиток отсекает нижние 20-30% содержимого. Я могу потянуться, чтобы увидеть, что кнопки были построены и там внизу, но когда я отпустил это, прокрутка вернется к ложному дну, который отсекает мой контент !!! Я пытался в течение нескольких дней исправить ее, чтобы прокрутить всю высоту, но она продолжает срезаться !!

Описание приложения: Я использовал автомат для макета 6 кнопок и этикеток. Каждая кнопка представляет собой прямоугольное изображение с меткой непосредственно под ним. (Извините, сайт не позволит мне размещать фотографии!)

Я мои взгляды расположены так: MainView> ScrollView> ContentView> Кнопки & этикетки

Я мой contentView прижат к моему ScrollView и мой ScrollView привязан к моему MainView. Мои кнопки и надписи все имеют ограничения, которые правильно строят, чтобы создать список, который выглядит следующим образом:

прямоугольная кнопка Ярлык под ним Spacing прямоугольная кнопка Ярлык под ним Разнос Etc.

Может

кого скажите, почему я не могу прокрутить всю длину представления?

+0

Я знаю, что работа с scrollviews - это боль. Большую часть времени, чтобы заставить их работать правильно, вам придется программно настраивать ограничения. Кроме того, вы изучили настройку/настройку 'UIScrollView.contentSize' во время выполнения? Еще кое-что. Пожалуйста, просмотрите это видео до конца. Это помогло мне TONS с scrollviews: https://www.youtube.com/watch?v=PgeNPRBrB18 – Andy

+0

У меня были проблемы с scrollview и ограничениями в последнее время, вы можете взглянуть на мой вопрос здесь: http: // stackoverflow .com/questions/28626150/trouble-with-uiscrollview-and-constraints и в ответ, который мне дал. Вы найдете пример проекта, с которого вы можете начать. – lchamp

+0

Andrew Heinlein - Спасибо за быстрый ответ. Забавно, я использовал связанный учебник год назад, чтобы узнать, как прокручивать представление с помощью пружин и распорок. Он работал достаточно хорошо. На этот раз я использую автоматическую компоновку, которую я не освоил и вызывает у меня много проблем! –

ответ

6

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

  1. Ваш ScrollView должен быть закреплен на всех четырех сторонах MainView. (Это не обязательно. Вы можете ограничить свой ScrollView, как хотите, но убедитесь, что он может расти по мере изменения устройства и/или ориентации).

  2. Ваш ContentView должен быть прижат на всех 4-х сторон к ScrollView со смещениями 0.

  3. Так как вы хотите, чтобы ваш ScrollView прокручивать только вертикально, ограничивают ширину ContentView к ширине ScrollView с помощью a Равные ширины Ограничение. Для этого в редакторе , Элемент управления - откройте ContentView до вашего ScrollView и выберите Равные ширины из всплывающего окна.

  4. Высота ContentView будет определяться суммой общей высоты всего в ней. Чтобы это работало, ваша самая верхняя кнопка должна быть закреплена в верхней части ContentView, все ваши кнопки и ярлыки должны быть прикреплены к ближайшим соседям, а нижняя метка должна быть прикреплена к нижней части ContentView. Кроме того, все ваши кнопки и метки должны иметь ограничения для их ширины и высоты. Я бы предложил установить явное ограничение ширины и явное ограничение высоты для ваших кнопок и центрировать их по горизонтали в ContentView. Для ваших ярлыков установите явное ограничение по высоте и привяжите левый и правый края к ContentView.

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

+0

Извините, если мое описание было расплывчатым. Я считаю, что все это вышло, поэтому позвольте мне уточнить. Я проводил исследования до публикации и пробовал набор подобных шагов, которые я нашел в Интернете. Я привязал свой контентный просмотр по всем четырем краям к просмотру прокрутки и моему прокрутку к основному виду на всех четырех ребрах. Я играл с этим довольно немного перед публикацией. Я ограничил свой контент и основные размеры представлений одинаковыми. Я добавил ограничения отношений между всеми изображениями и ярлыками и их соседями, а также горизонтальными центрами. Все выглядит хорошо, когда он строит, за исключением того, что он только немного прокручивается! –

+0

Убедитесь, что константа ограничения в нижней части содержимого отображается правильно. Если это большое отрицательное или положительное число (в зависимости от порядка элементов в ограничении), это может привести к ситуации, которую вы видите. – vacawama

+0

Спасибо! Я создал новый проект, чтобы проверить это, и это сработало! Поэтому я вернулся к своему неработающему приложению, очистил свои ограничения и сделал точно так, как описано выше. Это тоже сработало. Я считаю, что моя ошибка заключалась в том, что я не объявлял ограничение от последнего изображения в нижней части представления. На этот раз я был более явным в объявлении ширины и высоты для каждого изображения и метки. Я в замешательстве, потому что я думал, что большое преимущество автомашинки было в том, что я только должен был объявлять отношения, и он адаптировал бы размер. Независимо от того, это помогло так благодарить вас. –

0

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

В противном случае я думаю, что было бы неплохо, чтобы setContentSize вашего scrollView в вашем viewDidLoad.

Другим взломом было бы разместить 2 объекта пользовательского интерфейса со своим алфавитом, установленным на ноль в правом верхнем углу и в левом нижнем углу. Это подскажет scrollView, чтобы установить его contentSize.

+0

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

+0

Обновление - я начал новый проект и использовал шаги Вакавамы. Оно работает. Я был бы взволнован, но я не ближе к выяснению, какая ошибка приводит к тому, что мое приложение не работает! На этом этапе мое единственное решение начинается! Я буду беспокоить стрельбу. Спасибо за помощь! –

Смежные вопросы