Как (повторить) анимацию для WKInterfaceGroup без использования изображений - PullRequest
0 голосов
/ 09 апреля 2019

У меня очень простая анимация, поэтому, естественно, я стараюсь избегать последовательностей изображений и SpriteKit.

Я просто установил фон WKInterfaceGroup на зеленый. Я хочу, чтобы он постепенно увеличивал и уменьшал альфа от 1,0 до 0,2 и от 0,2 до 1,0. Назовите это пульсом или как хотите.

Я могу сделать это с помощью: self.animate(withDuration: 1.0) { row.circleBG.setAlpha(0.2) }.

Но как мне вернуть его обратно и бесконечно повторять всю анимацию?

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

Единственный способ повторения, который я могу найти, требует диапазона последовательности изображений, подобного этому. row.circleBG.startAnimatingWithImages(in: (need image range), duration: 1.0, repeatCount: 100) Но я не использую изображения.

Конечно, я мог бы использовать изображение зеленого круга и изображение черного круга, но это кажется таким ненужным и смешным.

Попытка сделать что-то подобное, но на самом деле это не повторится, и мне нужно fadein + fadeout, чтобы повторяться вместе как одна анимация. Импульс исчезает / исчезает и повторяется.

Также я могу получить доступ только к row.ringStatus. купить, создав for (index, value) in. Я хотел бы избежать повторения этого кода.

var pulseTimer: Timer!
pulseTimer = Timer.scheduledTimer(timeInterval: 5, target: self, selector: #selector(pulse), userInfo: nil, repeats: true)

  @objc func pulse() {

    for (index, value) in self.messageObject.enumerated() {
        guard let row = messagesTable.rowController(at: index) as? MessageListRowController else { continue }

        DispatchQueue.main.async {

            row.ringStatus.setBackgroundColor(.green)
            row.ringStatus.setAlpha(1.0)
            row.ringStatus.setAlpha(0.2)


        }
    }
}
...