Swift - представить / закрыть ViewController с анимацией UIImage - PullRequest
0 голосов
/ 09 января 2020

Я хотел бы иметь анимацию при нажатии / отклонении моего ViewController.

Лучший способ показать вам, что я имею в виду, это посмотреть на N26: Анимация

В моем случае у меня есть CollectionView, где пользователь может нажать на cell чтобы перейти к следующему ViewController, который я обрабатываю с помощью tapCallback:

func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {

    // if indexPath.item is less than data count, return a "Content" cell
    if indexPath.item < dataSourceArray.count {
        let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "ContentCell", for: indexPath) as! ContentCell
        // set cell label
        cell.cellLabel.text = dataSourceArray[indexPath.item].name
        // set cell image
        cell.wishlistImage.image = dataSourceArray[indexPath.item].image
        if cell.wishlistImage.image == images[2] || cell.wishlistImage.image == images[3] {
            cell.priceLabel.textColor = .gray
            cell.priceEuroLabel.textColor = .gray
            cell.wishCounterLabel.textColor = .gray
            cell.wünscheLabel.textColor = .gray
        }
        // set background color
        cell.imageView.backgroundColor = dataSourceArray[indexPath.item].color
        cell.wishCounterView.backgroundColor = dataSourceArray[indexPath.item].color
        cell.priceView.backgroundColor = dataSourceArray[indexPath.item].color


        cell.customWishlistTapCallback = {

            // track selected index
            self.currentWishListIDX = indexPath.item

            let vc = self.storyboard?.instantiateViewController(withIdentifier: "WishlistVC") as! WishlistViewController

            vc.wishList = self.dataSourceArray[self.currentWishListIDX]

            vc.theTableView.tableView.reloadData()
            self.present(vc, animated: true, completion: nil)

        }

        return cell
    }

Чтобы отклонить ViewController, пользователь просто должен нажать button:

@objc private func dismissView(){
    self.dismiss(animated: true, completion: nil)
}

Это скриншот моих CollectionView и ViewController, которые я представляю / отклоняю:

enter image description here enter image description here

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

Если вам что-то непонятно, не стесняйтесь спрашивать.

Я пытался найти это, но я не мог ничего найти, поэтому я благодарен за любую помощь:)

1 Ответ

2 голосов
/ 09 января 2020

Существует действительно хорошая библиотека, которая выполняет эту функцию, она называется Hero .

Если вы хотите создать свою собственную реализацию, вам нужно будет использовать собственную UIViewControllerTransitioningDelegate

...