Исчезать / выводить весь вид, кроме одного подпредставления - PullRequest
3 голосов
/ 09 февраля 2012

Я пытаюсь воссоздать эффект в приложении «Путь»: когда вы нажимаете на фото / видео, исчезают все виды, кроме того, который вы только что нажали, который становится полноэкранным.

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

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

Что ты думаешь?

Ответы [ 4 ]

4 голосов
/ 09 февраля 2012

Для обсуждения давайте рассмотрим два вида: «миниатюру», которая содержит сетку меньших изображений, и «детализированный» вид, который анимируется по размеру и положению для заполнения экрана.

Если рассматривать эти виды отдельно, управлять анимациями становится проще. Щелчок по элементу в представлении «миниатюра» приводит к исчезновению этого представления, и новое представление «подробно», содержащее копию выбранного элемента, появляется в той же позиции и анимируется на весь экран.

2 голосов
/ 09 февраля 2012

Как насчет размещения UIView перед всем с белым фоном на 0,5 альфа (это можно анимировать от 0 до> 0,5, чтобы получить нужный эффект затухания).

Затем переместите фотографию, которую вы не хотите затемнять, чтобы она не изменилась.

1 голос
/ 09 февраля 2012

Вот как бы я поступил по этому поводу.

  1. Убедитесь, что действие возможно только тогда, когда представление прокрутки не прокручивается (необязательно)
  2. Отключите прокрутку в представлении прокрутки
  3. Используйте методы преобразования координат UIView ("convertRect: fromView:" и "convertRect: toView:"), чтобы вычислить новый кадр для представления изображения.Новое целевое суперпредставление может быть keyWindow приложения или другим полноэкранным подпредставлением, если хотите.Есть несколько способов сделать это, так как задействовано несколько представлений (представление фрейма, возможное представление содержимого ячейки таблицы, представление прокрутки и т. Д.), Поэтому я рекомендую спланировать тест, который поможет вам быстро понятькогда ожидаемые и фактические переводы координат равны.
  4. Удалить представление изображения из его суперпредставления
  5. Добавить представление изображения в преобразованном прямоугольнике в полноэкранный режим или keyWindow
  6. Добавитьанимации (альфа = 0 для фона, изменение размера (и, возможно, вращение) для просмотра изображения).Анимация alpha = 0 для контроллера вида, который ранее удерживал вид изображения, будет очень хорошо переходить в черный цвет, если позади него есть другой вид с черным фоном.Вы также можете просто разместить 2 вида в контроллере представлений, один простой черный UIView, а другой (поверх черного) будет содержать все виды, которые вы хотите исчезнуть.Затем вам нужно всего лишь изменить альфу в этом одном представлении, и все его подпредставления исчезнут.
0 голосов
/ 09 февраля 2012

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...