Я бы вынес такую “карточку” в отдельный назовем его CardView, дальше положил бы для таблицы внутрь uitableviewcell. Когда юзер тапнул на ячейку, находим ее фрейм, по границам фрейма добавляем еще один “CardView” поверх, пользователь не заметит что теперь их два одинаковых. Дальше просто бы анимировал констрейнты границ на расширение и сжатие. Остальное за нас сделает автолейаут