Репликация Google Search iOS Cards Animation

Я пытаюсь воспроизвести это в данный момент:

введите здесь описание изображения

Если вы знакомы с приложением Google, оно выглядит как UICollectionView с настраиваемым макетом потока.

Я расширяю вопрос, который был закрыт с помощью дополнительного кода.

Вот ссылка на другой вопрос.

В пользовательском классе компоновки потока я могу создать эффект «стекания», установив отрицательное значение минимального межстрочного интервала и используя следующее:

- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect
{
    NSArray *allAttributesInRect = [super layoutAttributesForElementsInRect:rect];

    CGPoint centerPoint = CGPointMake(CGRectGetMidX(self.collectionView.bounds), CGRectGetMidY(self.collectionView.bounds));

    for (UICollectionViewLayoutAttributes *cellAttributes in allAttributesInRect)
    {
        if (CGRectContainsPoint(cellAttributes.frame, centerPoint))
        {
            cellAttributes.transform = CGAffineTransformIdentity;
            cellAttributes.zIndex = 1.0;
        }
        else
        {
            cellAttributes.transform = CGAffineTransformMakeScale(0.75, 0.75);
        }
    }

    return allAttributesInRect;
}

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


person STANGMMX    schedule 09.07.2014    source источник
comment
Привет. Я пытаюсь воспроизвести тот же эффект, хотя и без особого успеха. Мне нужно, чтобы карты были частью UICollectionView/UITableView, чтобы пользователь мог прокручивать больше, чем просто некоторые карты, такие как Google. Но я могу заверить вас, что Google создал это приложение не с представлением коллекции. Я проверил приложение в Reveal, и они в основном делали анимацию, используя только представления. тем не менее, мне также нужно представление о коллекции, и единственный способ увидеть, как это делается, - это иметь два макета, между которыми вы можете анимировать переход. хотя это займет гораздо больше времени   -  person alex    schedule 08.09.2014
comment
Видео или GIF с эффектом, который вы ищете, помогут вам получить ответ.   -  person Segev    schedule 01.11.2014


Ответы (1)


Я вижу две части этой точки зрения. 1. Стопка «карт» и 2. Таблица стопок. Разбивая его таким образом, с ним намного легче справиться.

В подклассе UIView должно быть довольно просто создать «карту» (я назову ее UICardView), которую вы можете перетаскивать. Создание «стека» из них также не должно быть слишком сложным. Я вижу, что самой сложной частью этого будет эффективное добавление тени.

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

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

person Fennelouski    schedule 21.11.2014