2015-03-26 25 views
10

У меня есть макет следующим образом (с помощью AutoLayout, IPad):Изменить размер UIView внутри UIScrollView с помощью AutoLayout для прокрутки?

Xcode screenshot

UIScrollView имеет сверху, снизу, ведущий, Скользящее пространство к надтаблицам как 0. UIView также имеет все четыре подобных ограничений. Второй UILabel имеет свою высоту, установленную на 0 программно (поскольку здесь показан более чем экранный текст). Кроме того, эти ограничения на четыре контакта также были установлены с UIView до UIScrollView.

При загрузке XIB этот UILabel отображает длинные строки текста правильно. Но прокрутка не работает. Это скриншот запущенного приложения на IPad в:

enter image description here

Желтый фон установлен на внешний вид и серую для UIView. Если вы внимательно посмотрите в конце скриншота, текст UILabel, кажется, переполняется мимо UIView.

Я подозреваю, что, поскольку UIView не может «захватить» размер это подвиды, то UIScrollView не может вычислить это contentsize тоже (нет никаких оснований для прокрутки, чтобы работать, если его мнение содержания равно только один экран). Почему это происходит, даже когда UILabel явно является подразделением UIView? Если мои подозрения верны, Как установить высоту UIView, равную фактическому размеру содержимого, чтобы мой UILabel был правильно «содержался» в нем?

(Установка высоты UIView, статическая статика не является вариантом).

NB: Протестировано XIB без UIView и только один UILabel (с длинным текстом) внутри UIScrollView. Теперь прокрутка работает (поскольку, я полагаю, представление прокрутки может рассчитать размер его содержимого).

NB2: Я также пробовал ответы в this SO question и this post, но мой UIView просто не выходит за пределы экрана. (Меня интересует только горизонтальная прокрутка)

ответ

22

Проблемы с AutoLayout очень сложно объяснить с помощью текста. У меня была такая же проблема. Я нашел решение в этом видео. надеюсь, это тоже поможет вам.

https://www.youtube.com/watch?v=UnQsFlMGDsI

Это видео демонстрирует, как создать UIScrollView, который имеет некоторые взгляды на верхней части экрана и вид на нижней части экрана в Autolayout. Размер содержимого UIScrollView автоматически настраивается на размер экрана или размер содержимого таким образом, что на более мелких устройствах прокрутка активна, а на больших устройствах прокрутка неактивна, потому что она не нужна. UIButton ниже UITextFields всегда остается в нижней части экрана, и все работает на всех разрешениях iPhone (iPhone 4/5/6/6 Plus).

+6

Это было невероятно удивительно! Хитрость заключалась в том, чтобы иметь другой «UIView' ** вне **« UIScrollView », а затем установить ограничения« Равные высоты и ширины »из внутреннего *' UIView' на ** external ** 'UIView'. Огромное спасибо! –

+0

Ваш прием. И не стесняйтесь обращаться за дополнительной помощью ... –

+2

Спас день! .. и для всех, кто интересуется этим, я устанавливаю «Равные ширины» и «Равные высоты» из внутреннего UIView в сам scrollView. –

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