iphone - human - uiimageview set image swift
iphone actualizar imágenes UIImageView (4)
Tengo una pregunta bastante básica. Tengo varias (5) imágenes UIImageView
en mi pantalla. Cuando hago clic en un botón, quiero cambiar cada imagen a otra cosa. También quiero reproducir un sonido a medida que se cambia cada imagen.
Así que básicamente quiero un sonido de clic a medida que cambia cada imagen.
El problema es que, por alguna razón, si tengo 5 imágenes,
el sonido se reproduce 5 veces primero y luego las imágenes cambian.
Es como si las imágenes solo se actualizaran cuando el control vuelve al usuario para su ingreso.
¿Cómo puedo "forzarlo" a actualizar las imágenes tan pronto como le digo qué imagen mostrar?
Soy nuevo en el iphone / macworld, así que no me molestes :-)
Almiar
Es como si las imágenes solo se actualizaran cuando el control vuelve al usuario para su ingreso.
Eso es exactamente lo que sucede. La interfaz de usuario se actualiza en el hilo principal, por lo que no se producen actualizaciones mientras se ejecuta el código.
Para lograr lo que quieres, vas a necesitar temporizadores. Eche un vistazo a la documentación NSTimer. Necesita crear un temporizador que active un método para cambiar su segunda imagen y luego vuelva a ponerle un temporizador para cambiar su tercera imagen. Hay un método conveniente para crear un temporizador como el que necesita: + (NSTimer *)timerWithTimeInterval:(NSTimeInterval)seconds target:(id)target selector:(SEL)aSelector userInfo:(id)userInfo repeats:(BOOL)repeats
[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage2:) userInfo:nil repeats:NO];
entonces, tienes un método:
- (void) updateImage2(NSTimer*)theTimer
{
//Update image 2 here
// play sound 2 here
[NSTimer timerWithTimeInterval:1.0f target:self selector:@selector(updateImage3:) userInfo:nil repeats:NO];
}
Te dejo implementar el método updateImage3: ;-)
Ejecutar las actualizaciones de este modo le da al hilo principal la oportunidad de actualizar la interfaz de usuario.
Parece que probablemente esté cargando las imágenes del disco o la red mientras reproduce un sonido de forma asincrónica. Quizás esté utilizando AudioServicesPlaySystemSound
junto con UIImage +imageWithContentsOfURL:
:? La carga de la imagen real y el código de reproducción de sonido serían más útiles aquí.
Si está buscando una forma de actualizar el UIImageView periódicamente, puede hacer referencia a lo siguiente: http://www.shanison.com/2010/12/25/uiimageview-load-remote-image/
Esto funcionó para mí, cuando quería cambiar uiimageview background y actualizarlo, y continuar ejecutando código después de eso:
-(void)imgTapped_event:(UIImageView*)imgViewTapped
{
imgViewTapped.backgroundColor=[UIColor whiteColor];
//let the system update ui changes
[NSRunLoop currentRunLoop]runUntilDate:[NSDate dateWithTimeIntervalSinceNow:0.0f]];
//continue your code execution, play sounds etc...
//my helper method to play sound
[self playSound:@"goodAnswer" sync:YES loops:0];
}