Заполните пустые места, где раньше были анимации после анимации - PullRequest
0 голосов
/ 11 ноября 2011

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

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

Например, 2 документа (которые находятся над документом) могут исчезнуть, за ними следует пробел после этого документа (где был предыдущий документ), затем еще 2 документа, затем 3 пробела, затем еще 4 документы.

Пример:
Пробелы указывают на документ, который пропал, черные - на документы, которые существуют
example
Я выбрал метод, который мог бы работать:

  • Узнайте, сколько пробелов над документом (до тех пор, пока он не попадет в другой документ, так что это не общее количество пробелов над документом, а только количество, пока он не достигнет документа)

, затем

  • Подсчитайте, на сколько пикселей его можно увеличить, умножив количество «прозрачных» документов над текущим документом на 165

и повторите этот процесс для каждого документа, начиная с нижней части списка.

Итак, я попытался написать некоторый код для этого, но он не полностью перемещает все документы. Вместо этого он перемещает первый документ, но не другие.

Вот мой код:

incCtr - количество пробелов над документом.

for (int i = [documentThumbnails count]-1; i != 0; i--) {
    int ctr = i;
    int incCtr = 0;

    //while there is a blank space, increment incCtr
    while (![self thumbnailExistsAtSpecificIndex:ctr-1]) {
        ctr--;
        incCtr++;
    }

    uint32_t toMoveUpYCoordinate;
    thumbnailView *object = [documentThumbnails objectAtIndex:i];

    toMoveUpYCoordinate = (165 * incCtr);

    object.frame = CGRectMake(13, object.frame.origin.y-toMoveUpYCoordinate, object.frame.size.width, object.frame.size.height);;
}

Любая помощь по этому вопросу будет принята.

1 Ответ

0 голосов
/ 11 ноября 2011

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

Ознакомьтесь с моей статьей о том, как это сделать. Это работает в сетке, но принципы те же, выРазмещайте элементы только по вертикали.

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