iphone - ¿Cómo hacer invisible la "pista" de UISlider?
objective-c opacity (8)
Estoy intentando emular la función "Deslizar para desbloquear" de Apple en mi aplicación. Llego a este punto (imagen abajo), pero como puede ver, la "pista" de UISlider es visible y está cubriendo mi texto. ¿Hay una manera de cambiar un atributo mediante programación que haga que la "pista" sea invisible?
Por favor avíseme si necesita alguno de mis códigos.
¡Gracias por adelantado!
EDITAR: Si cambio el alfa del control deslizante a 0, se deshace de mi botón deslizante, por lo que hacerlo no funcionará a menos que lo esté haciendo mal. :)
Aquí hay una manera aún más fácil. No es necesario crear imágenes, simplemente cree una instancia de una clase UIImage vacía: P
UIImage *clearImage = [[UIImage alloc] init];
[self.slider setMinimumTrackImage:clearImage forState:UIControlStateNormal];
[self.slider setMaximumTrackImage:clearImage forState:UIControlStateNormal];
En Swift:
slider.setMinimumTrackImage(UIImage(), forState: .Normal)
slider.setMaximumTrackImage(UIImage(), forState: .Normal)
En realidad lo acabo de descubrir. Esto es lo que hice:
UIImage *sliderMinimum = [[UIImage imageNamed:@"clearTrack.png"] stretchableImageWithLeftCapWidth:4 topCapHeight:0];
[slider setMinimumTrackImage:sliderMinimum forState:UIControlStateNormal];
UIImage *sliderMaximum = [[UIImage imageNamed:@"clearTrack.png"] stretchableImageWithLeftCapWidth:4 topCapHeight:0];
[slider setMaximumTrackImage:sliderMaximum forState:UIControlStateNormal];
clearTrack.png
es solo una imagen de control deslizante que hice.
Ahora tengo esto: yay!
En respuesta a la pregunta establecida, puede establecer un png transparente de 1px para las imágenes de seguimiento mínimo y máximo.
Parece que el simple hecho de configurar el color del tinte para borrar lo hace ...
[slider setMinimumTrackTintColor:[UIColor clearColor]];
[slider setMaximumTrackTintColor:[UIColor clearColor]];
Probablemente no haya una manera de ocultar la pista; La "diapositiva para desbloquear" no se comporta como un UISlider y es probablemente un control personalizado. Es posible que pueda piratear el control deslizante, tal vez estableciendo la opacidad baja (0 lo hará oculto y no recibirá toques), pero si sigue esa ruta, es probable que se rompa algo después de una actualización del sistema operativo. Apple no se desvive por la compatibilidad, como lo hace Microsoft.
La forma correcta de hacerlo es con un control personalizado. Puede parecer más trabajo que usar un UISlider, pero no lo es si lo comparas con todo el tiempo que pasaste y / o gastarás pirateando un UISlider.
Para hacerlo: subclase UIControl. Escriba su propio código de dibujo para que se vea bien (probablemente pueda reutilizar algo de lo que esté haciendo ahora). A continuación, regístrese para eventos táctiles para mover el control deslizante:
- UIControlEventTouchDown: si está en el identificador, establezca un indicador "en movimiento"
- UIControlEventTouchDragInside: si el indicador de movimiento está establecido, mueva el asa a la posición táctil; simplemente puede actualizar una variable de instancia, llame a setNeedsDisplay para dibujarla en la nueva posición.
- UIControlEventTouchUpInside: si el indicador de movimiento está establecido y el control está al final, desbloquear
Si quieres imitar el verdadero controlador de desbloqueo, juega con él y observa cómo se comporta. Es posible que deba responder a los eventos de manera diferente (qué sucede si arrastra fuera de la ruta del control deslizante). Pero deberías poder entenderlo todo.
Respuesta por @Arjay Waran es el mejor en mi opinión.
Heres la versión Swift 3.0 de la misma.
slider.minimumTrackTintColor = UIColor.clear
slider.maximumTrackTintColor = UIColor.clear
Aclamaciones