¿Cómo puedo poner un UILabel sobre el pulgar de UISlider ... para que cuando mueva el pulgar ... UILabel también se mueva ... como está en el pulgar ...UILabel Over UISlider Thumb
¿Alguna idea?
¿Cómo puedo poner un UILabel sobre el pulgar de UISlider ... para que cuando mueva el pulgar ... UILabel también se mueva ... como está en el pulgar ...UILabel Over UISlider Thumb
¿Alguna idea?
La "perilla" no está disponible por API pública, por lo que hay malas posibilidades de conectarla - si es una subvista y no solo dibujada directamente.
Por lo tanto, debe agregar su etiqueta a la misma vista que el control deslizante (asegúrese de agregarlo más tarde para que aparezca sobre). Luego puede escuchar los eventos de cambio de valor y colocar su etiqueta en consecuencia. Es un escalado lineal entre los puntos finales lo que necesita saber al principio, pero no debería ser demasiado difícil.
Editar con el código:
yourLabel = [[UILabel alloc]initWithFrame:....];
// .. configure label
[[yourSlider superview] addSubview:yourLabel];
[yourSlider addTarget:self action:@selector(adjustLabelForSlider:) forControlEvents:UIControlEventValueChanged];
-(void)adjustLabelForSlider:(id)slider
{
float value = slider.value;
float min = slider.minimumValue;
float max = slider.maximumValue;
CGFloat newX = ...; // Calculate based on yourSlider.frame and value, min, and max
CGFloat newY = ...;
[yourLabel setCenter:CGPointMake(newX,newY)];
}
Nota: el código no probado ;-)
Esto podría ser muy útil ... How to get the center of the thumb image of UISlider
Prueba este
yourLabel = [[UILabel alloc]initWithFrame:....];
//Call this method on Slider value change event
-(void)sliderValueChanged{
CGRect trackRect = [self.slider trackRectForBounds:self.slider.bounds];
CGRect thumbRect = [self.slider thumbRectForBounds:self.slider.bounds
trackRect:trackRect
value:self.slider.value];
yourLabel.center = CGPointMake(thumbRect.origin.x + self.slider.frame.origin.x, self.slider.frame.origin.y - 20);
}
Podría g y el valor más preciso al usar este fragmento.
+1 Establece la etiqueta en movimiento en la parte superior de la Vista. Puede ajustar lbl.center.y para la posición personalizada. – HDdeveloper
Gracias por su respuesta, esta línea tiene que ser: yourLabel.center = CGPointMake (thumbRect.origin.x + self.slider.frame.origin.x + yourLabel. frame.size.width/2.f, self.slider.frame.origin.y - 20); aunque –
simplemente añada una imageview en el pulgar de control deslizante añadir una etiqueta en imageview
- (IBAction)valueChangedSlider:(id)sender {
handleView = [_slider.subviews lastObject];
label = [[UILabel alloc] initWithFrame:handleView.bounds];
label = (UILabel*)[handleView viewWithTag:1000];
if (label==nil) {
label = [[UILabel alloc] initWithFrame:handleView.bounds];
label.tag = 1000;
[label setFont:[UIFont systemFontOfSize:12]];
label.textColor = [UIColor redColor];
label.backgroundColor = [UIColor clearColor];
label.textAlignment = NSTextAlignmentCenter;
[handleView addSubview:label];
}
label.text = [NSString stringWithFormat:@"%0.2f", self.slider.value];
}
La misma respuesta con swift3:
let trackRect: CGRect = slider.trackRect(forBounds: slider.bounds)
let thumbRect: CGRect = slider.thumbRect(forBounds: slider.bounds , trackRect: trackRect, value: slider.value)
let x = thumbRect.origin.x + slider.frame.origin.x
let y = slider.frame.origin.y - 20
sliderLabel.center = CGPoint(x: x, y: y)
creo que lo tengo .. ....... pero puede dar un código de muestra ... ?? – Rony
Se agregó un código ... – Eiko