Программно раскрыть UIView - PullRequest
       13

Программно раскрыть UIView

3 голосов
/ 15 августа 2011

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

Моя первая попытка состояла в том, чтобы просто установить прямоугольник границ на меньший размер и анимировать его как полный размер кадра представления, но это не дало желаемого эффекта, поскольку, изменяя границы, я также менял кадр.

Если то, что я пытаюсь сделать, не представляется возможным (по крайней мере, не простым способом), по крайней мере, я хотел бы иметь возможность каким-то образом сделать подпредставления основного вида неподвижными относительно экрана. , НЕ их родительское представление, поскольку родительский размер изменяет (это дало бы подобный эффект).

Есть идеи?

Спасибо,

-Matt

Ответы [ 2 ]

6 голосов
/ 16 августа 2011

Это определенно возможно.Что вам нужно сделать, это

  • Для анимируемого вида, setAutoresizesSubviews:NO и setClipsToBounds:YES.
  • Установите границы вида (НЕ рамки) на прямоугольник с помощьюнулевой размер и начало координат в центральной точке прямоугольника, который вы хотите, чтобы представление занимало, когда оно полностью раскрыто (в собственной системе координат представления).Другими словами, startBounds.origin.x должно равняться половине endBounds.size.width и аналогично для y.
  • Позиционировать вид путем установки его center (в системе координат родительского вида).
  • В анимационном блоке измените границы представления на нулевой источник и полный размер.
  • В блоке завершения анимации вы, вероятно, захотите снова setAutoresizesSubviews:YES.

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

0 голосов
/ 16 августа 2011

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

...