2015-05-06 2 views
2

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

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

Есть ли способ сделать это простым способом?

ответ

2

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

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

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

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

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