Масштабировать анимацию на самом UITableViewCell или его contentView - PullRequest
0 голосов
/ 15 апреля 2019

Я хочу добиться анимации, такой как Appstore, где вы нажимаете на элемент, и элемент масштабируется до меньшего размера, а затем освобождает элемент, и он возвращается к своему первоначальному размеру.

Масштабирование анимации на UIView работает отлично. Во-первых, если я делаю ту же анимацию масштабирования на самой UITableviewCell, то получаю нужную анимацию, но она создает цветной фон позади, что не является желаемым результатом. Во-вторых, если я делаю ту же анимацию на contentView из UITableviewCell, тогда она портит анимацию. Не то, что я ожидаю.

1.На контентеПросмотреть

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
        debugPrint("did hightlight")
        let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
        UIView.animate(withDuration: 0.75) {
            cell?.contentView.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
        }
    }

    func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
        debugPrint("unhightlight")
        let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
        UIView.animate(withDuration: 0.3) {
             cell?.contentView.transform = CGAffineTransform.identity
        }
    }

2. На самой ячейке


func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
        debugPrint("did hightlight")
        let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
        UIView.animate(withDuration: 0.75) {
            cell?.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
        }
    }

    func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
        debugPrint("unhightlight")
        let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
        UIView.animate(withDuration: 0.3) {
             cell?.transform = CGAffineTransform.identity
        }
    }

3.На подпредставлении "viewShadow"

func tableView(_ tableView: UITableView, didHighlightRowAt indexPath: IndexPath) {
        debugPrint("did hightlight")
        let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
        UIView.animate(withDuration: 0.75) {
            cell?.viewShadow.transform = CGAffineTransform(scaleX: 0.9, y: 0.9)
        }
    }

    func tableView(_ tableView: UITableView, didUnhighlightRowAt indexPath: IndexPath) {
        debugPrint("unhightlight")
        let cell = tableView.cellForRow(at: indexPath) as? RestaurantTVC
        UIView.animate(withDuration: 0.3) {
             cell?.viewShadow.transform = CGAffineTransform.identity
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...