Máscara de image del indicador de progreso Swift

Para comenzar, este proyecto se ha construido usando Swift.

Quiero crear un indicador de progreso personalizado que se "llene" a medida que se ejecuta el script. El script llamará a un feed JSON que se extrae del server remoto.

Para visualizar mejor lo que busco, hice esto:

introduzca la descripción de la imagen aquí

Mi conjetura sería tener dos imágenes PNG; uno blanco y uno rojo, y luego simplemente hacer algo de enmascaramiento según la cantidad de progreso.

¿Alguna idea de esto?

El enmascaramiento es probablemente una exageración para esto. Simplemente vuelva a dibujar la image cada vez. Cuando lo hagas, dibujas el rectángulo rojo para llenar la mitad inferior del dibujo, a la altura que quieras; luego dibujas la image de gota (un PNG), que tiene transparencia en el medio para que se vea el rectángulo rojo. Entonces, un PNG es suficiente porque el rectángulo rojo se puede dibujar "en vivo" cada vez que vuelve a dibujar.

Tu dibujo me gustó tanto que quería darle vida, así que aquí está mi código de trabajo (mi PNG se llama tear.png y iv es un UIImageView en mi interfaz; el percent debe ser un CGFloat entre 0 y 1):

 func networkingraw(percent:CGFloat) { let tear : UIImage! = UIImage(named:"tear")! if tear == nil {return} let sz = tear.size let top = sz.height*(1-percent) UIGraphicsBeginImageContextWithOptions(sz, false, 0) let con = UIGraphicsGetCurrentContext() UIColor.networkingColor().setFill() CGContextFillRect(con, CGRectMake(0,top,sz.width,sz.height)) tear.drawAtPoint(CGPointMake(0,0)) self.iv.image = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() } 

También conecté un UISlider cuyo método de acción convierte su value en un CGFloat y llama a ese método, de modo que al mover el control deslizante hacia adelante y hacia atrás se mueve el relleno rojo hacia arriba y hacia abajo en forma de lágrima. ¡Podría jugar con esto durante horas!

introduzca la descripción de la imagen aquí