¿Cómo hacer un button animado en Apple WatchKit?

Me gustaría hacer un button con animation en WatchKit, pero parece que no puedo encontrar una manera de modificar WKInterfaceButton o arrastrar una image a un button en el guión gráfico. Cualquier ayuda es apreciada.

Después de un poco de investigación encontré la solución, es bastante simple pero fácilmente ignorada 🙂

Primero, arrastre un button a una escena creada en el guión gráfico.

Segundo, select el button, modifique su content propiedad de Text a Group . Si no puede encontrar la propiedad de content , click el button Attributes Inspector en la parte superior derecha de su pantalla, se ve como un button de punto de interrupción o una flecha hacia abajo con una barra.

introduzca la descripción de la imagen aquí

Ahora puedes controlar el grupo creado dentro de tu button. WKInterfaceGroup agregar una reference de este WKInterfaceGroup dentro de su código de controller. Aquí hay un ejemplo:

 @interface AAPLButtonDetailController() @property (weak, nonatomic) IBOutlet WKInterfaceGroup *buttonGroup; @end @implementation AAPLButtonDetailController - (instancetype)init { self = [super init]; if (self) { // Initialize variables here. // Configure interface objects here. [_buttonGroup setBackgroundImageNamed:@"Bus"]; [_buttonGroup startAnimating]; } return self; } 

Entonces, la animation del button se reproducirá después de la initialization de la escena. Recuerde que solo la animation de fotogtwigs es compatible por ahora, todos los fotogtwigs de una animation deben ser nombrados como "Bus0.png", "Bus1.png" …

introduzca la descripción de la imagen aquí

Espero que esto pueda ayudar 🙂

La publicación de Reck funcionó para mí en instancias que necesitaba para controlar el recuento o la duración de la repetición. Si simplemente quieres comenzar o detener una animation por un button, me funciona a continuación, donde twoButton es un WKInterfaceButton y tengo un set de imágenes con nombre Bus0@2x.png, Bus1@2x.png, etc.

 - (void)startButtonAnimating { // This works, but can't control repeat counts or duration [self.twoButton setBackgroundImageNamed:@"Bus"]; // But you can stop after a delay by setting background image nil [self performSelector:@selector(stopGroupButtonAnimating) withObject:nil afterDelay:1.5]; } - (void)stopButtonAnimating { [self.twoButton setBackgroundImage:nil]; }