iOS - как исправить эту анимацию в ячейке табличного представления, чтобы повернуть налево, а затем снова вернуться - PullRequest
0 голосов
/ 10 апреля 2019

Цель состоит в том, чтобы содержимое первой ячейки табличного представления какое-то время перемещалось влево, а затем обратно.

Большая цель состоит в том, чтобы мы отразили представление содержимого ячейки немного влево и отскочили в красное поле, а затем вернули ячейку в нормальное состояние.Хотя это похоже на другой вопрос SO, ответ не показывает, как это сделать.Кроме того, этот вопрос будет применяться к любому, кто хочет анимировать, перемещая содержимое ячейки влево, а затем обратно.Таким образом, именно поэтому это отдельный вопрос.

Среда - iOS 11+ и приложение для iPhone.

У меня создан новый проект Table View, который анимирует contentView, перемещающийся с помощью преобразования.Тем не менее, кажется, что он не запускается удаленно в нормальном положении, а затем перемещается по желанию.Содержимое начинается с центрирования, а затем перемещается на место.

Как получить анимацию contentView, перемещаясь немного влево и затем снова возвращаясь в свое нормальное положение?

Проект: https://github.com/mikefinney/peekabooswipe

1 Ответ

2 голосов
/ 10 апреля 2019

Я немного переписал твой код.Вы применяли transform к представлению содержимого, и в документации предлагается вместо этого анимировать свойство center при изменении местоположения.

func applyCellAnimations() {

        let originalCenter = contentView.center
        let offsetCenter = originalCenter.applying(.init(translationX: -44, y: 0))

        animateToCenter(offsetCenter) {
            DispatchQueue.main.asyncAfter(deadline: .now() + 1, execute: {
                self.animateToCenter(originalCenter)
            })
        }
    }

    private func animateToCenter(_ center: CGPoint, completionHandler: @escaping () -> Void = { }) {

        layoutIfNeeded()

        UIView.animate(
            withDuration: 1,
            delay: 0,
            options: [.curveEaseInOut],
            animations: {
                self.contentView.center = center
        }, completion: { didComplete in
            if didComplete { completionHandler() }
        })
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...