Где вызвать анимацию в пользовательском представлении на дисплее - PullRequest
0 голосов
/ 04 мая 2018

Я создал собственный вид, который должен иметь анимацию в тот момент, когда он виден пользователю (он вращается бесконечно).

Я поместил это в функцию awakeFromNib, но я не уверен, что это правильное место, потому что бывают случаи (к сожалению, не регулярно), когда анимация не запускается.

Код:

override func awakeFromNib() {
  UIView.animate(withDuration: 1) {
    // property changes here
  }
}

Это правильное место или есть лучшая функция, которую я могу использовать?

Ответы [ 2 ]

0 голосов
/ 04 мая 2018

awakeFromNib это хорошее место. Лучший способ сделать это - начать анимацию после того, как ваше пользовательское представление было добавлено в качестве подпредставления к представлению, например так:

override func didMoveToSuperview() {
    UIView.animate(withDuration: 1) {
        // Your animation
    }
}

Поэтому, когда вы звоните addSubview, анимация начинает воспроизводиться.


Примечание:

Подклассы могут переопределять didMoveToSuperview для выполнения дополнительных действий всякий раз, когда Изменения суперпредставления.

Если вы перенесете свое пользовательское представление на любой другой индекс subviews (через, например, bringSubviewToFront), его суперпредставление изменится, поэтому этот метод будет вызван снова (потому что суперпредставление изменится).

0 голосов
/ 04 мая 2018

Я думаю, что лучше создать функцию, такую ​​как startAnimation, внутри пользовательского класса и выполнить

customView.startAnimation()

в viewDidAppear VC, к которому вы добавляете его, чтобы убедиться, что customView и его родительское представление полностью размечены

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...