Анимация collection view


#1

Как сделать анимацию ячейки collection view ? Так что бы она поворачивалась как бы задней стороной


#2

А в какой момент должна быть анимация?
Вот библиотека, посмотри!


#3

Например есть текст на английском. При нажатии на кнопку “перевести” ячейка (карточка к примеру) поворачивается другой стороной и на ней уже написан перевод на русском :slight_smile:


#4

К сожалению это не то :disappointed:


#5

Знаешь, вот если в лоб это реализовать, то можно ячейку коллекшн вью сделать прозрачной, на неё положить view0 нужного тебе цвета, а на него уже все элементы!
При нажатии на кнопку перевести:
запускаешь анимацию переворот для view0, и перезагружаешь ячейку с нужными тебе данными!


#6

Хм)) хорошая идея
Буду пробовать :slight_smile:


#7

Проблемка :sweat_smile:
Как использовать функцию “поворота” если кнопка находится в ViewController, а UIView (вьюшка которая должна повернуться) в ViewControllerCell ?
Если функцию использовать через cell то при скроллинге все вьюшки крутятся :smile:


#8

Подожди, еще раз: где находиться кнопка?
ты можешь чтоб не крутились все ячейки использовать индекс нужной тебе ячейки и вызывать анимацию только на нее!


#9

Если не трудно посмотрите файл


Проблема в том что при быстром скроллинге вьюшки крутятся


#10

Вопрос: ячеек должно переворачиваться за раз и как вы хотите определить какие\какая именно?

и по вопросу: [quote=“Xelper, post:9, topic:2903”]
Проблема в том что при быстром скроллинге вьюшки крутятся
[/quote]

это происходит по той причине, что ты применил

 cell.RoteateView()

и оно срабатывает для тех ячеек которые небыли отрисованы!
Чтоб такого не происходило, нужно переворачивать только определенную ячейку!
Смысл в том, что вам нужно иметь индекс активной ячейки!
вот это может вам поможет форум


#11

А возможно перевернуть все ячейки разом И что бы они не вертелись при отрисовки ?


#12

тога тебе нужно в методе “ячейка по индексу” убрать функцию поворота ячейки))
можно просто те ячейки что на экране перевернуть, а когда ты перегружаешь таблицу, остальные обрисовывать уже с контентом из другой стороны!
а как тебе в финале нужно?


#13

смотри

var visibleCurrentCell: IndexPath? {
    for cell in self.MyCollection.visibleCells {
        let indexPath = self.MyCollection.indexPath(for: cell)
        return indexPath
    } 
    return nil
}

вот так ты получаешь индекс ячейки на экране
А вот так получаешь к ней доступ при нажать на кнопку:

(self.MyCollection.cellForItem(at: visibleCurrentCell!) as! CollectionViewCell).backgroundColor = .red
(MyCollection.cellForItem(at: visibleCurrentCell!) as! CollectionViewCell).RoteateView()

но это так, на скорую руку!

и очень прошу, название классов пиши с большой, а методов и переменных с маленькой!


#14

Спасибо за помощь :slight_smile: зацепка уже есть
Буду дорабатывать


#15

Не стал создавать новую тему.
Что то не получается :frowning: теперь возникли вопросы:

  1. Почему иногда переворачивается ячейка на +1 позицию (н та что расположенная на экране, а следующая)
  2. Воспользовался советом “а когда ты перегружаешь таблицу, остальные обрисовывать уже с контентом из другой стороны!” но почему-то работает через 2 ячейки (например хочу скрыть надпись. И работает так -“1 ячейка- надпись скрылась” “2 ячейка - надпись осталась” “3 ячейка - надпись осталась” “4 ячейка- надпись скрылась”. Почему так ?:frowning:
    Буду очень благодарен/ если подскажете кодом.