Как скользить по контенту с помощью AutoLayout


У меня есть представление сообщений, в котором пользователь может выбрать смайлики для добавления в сообщение. У меня есть панель над клавиатурой, где пользователь может ввести свое сообщение. Выглядит это примерно так: H:|-[UIButton: emoticon]-[UITextField]-[UIButton: send]|

Теперь я попытался сдвинуть все это, установив их левое ограничение на constraint.constant -= screenWidth, но это, похоже, не сработало, так как я получил множество сообщений "не смог удовлетворить ограничения" в журнале, и ни одно из них не сдвинулось. У меня также была проблема с тем, чтобы не знать, куда поместить смайлики (это бар UIButton с одним смайликом каждый).

Есть ли способ сделать это простым способом?
1   2   2015-05-06 23:45:45

1 ответ:

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

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

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

Этот дополнительный вид дает мне гарантию, что все останется в том же размере и расположении, что и в начале анимации, и может даже позволить мне оптимизировать анимацию (например, я могу растеризировать вид, прежде чем прокрутить его, и UIKit тогда нужно будет переместить только один слой).