2013-06-30 2 views
0

У меня возникли проблемы с получением UIScrollView для соблюдения ограничений, которые я ввел в конструктор интерфейса.Как остановить построитель интерфейса, сбросив ограничения пользователя на UIScrollView?

Все, что мне нужно, это установить размер содержимого прокрутки изнутри IB.

UIScrollView содержит номер UIView.

Ограничения на UIScrollView:

Scroll View Constraints

Ограничения на UIView:

enter image description here

Я прочитал the documentation, и поэтому установили вещи следующим образом:

  • UIScrollView имеет ограничение пиннинг его в надтаблицы, таким образом, определяя ее размер от внешнего
  • UIView (содержания) имеет фиксированный размер (через ширину и высоту ограничения)
  • UIView закреплен на UIScrollView, таким образом, определяя размер содержимого

Однако IB не позволит мне вводить эти ограничения. Если я изменил ограничение «Нижнее пространство» между представлением и видом прокрутки, показанным на изображении как -2196, равным 0 (таким образом, закрепляя нижний край прокрутки), тогда ограничение «Top Space» сбрасывается до -независимое значение. То же самое происходит в обратном порядке. (Я еще не пробовал в Xcode 5, который имеет далеко идущий подход к недействительным ограничениям, поскольку он не просто бросает вас, когда ему это нравится.)

Что мне не хватает?

ответ

0

Каждый раз, когда я пытался сделать что-то, даже слегка усложненное с ограничениями в Interface Builder Xcode 4, я в конце концов отказался и либо написал ограничения в коде, либо переключил обратно на springs'n'struts и layoutSubviews (обычно после сбоя Xcode несколько раз).

Тем не менее, существует еще один подход к выкладке прокрутки с содержимым в IB. Просто сделайте вид прокрутки большим, чем размер его содержимого, и полагайтесь на контроллер вида (или на какой-то содержащий контроллер представлений), чтобы изменить размер прокрутки (или его супервизора) и позволить ограничениям сжимать рамку прокрутки во время выполнения. Контроллер корневого окна окна всегда будет устанавливать рамку своего представления на размер экрана, независимо от его размера в nib или раскадровке, и это изменение размера будет стекать по иерархии представлений.

Я описал этот подход более подробно in this answer.

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

+0

Я полностью согласен с вами. Способ Xcode 4 пытается обеспечить ограничения в 100% случаев (вместо того, чтобы разрешать нарушение изменений, которые вы исправляете перед компиляцией) является реальной проблемой. В качестве примера я просто попытался добавить ограничения размера в 'UIScrollView', а затем удалить его ...и эта конфигурация (идентичная той, которую я пыталась изначально) была разрешена>< – sapi

+1

Да, это то, что вам нужно сделать в Xcode 4, более ограничить, а затем удалить else. Xcode будет сражаться с вами, добавляя случайные ограничения, потому что он потеряет мои если какая-то вещь находится под ограничением. – GayleDDS

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