Come posso mettere un UILabel sul pollice di UISlider ... in modo che quando sposto il pollice .... UILabel si sposterà anche .... come è sul pollice ...UILabel Over UISlider Thumb
Qualche idea ??
Come posso mettere un UILabel sul pollice di UISlider ... in modo che quando sposto il pollice .... UILabel si sposterà anche .... come è sul pollice ...UILabel Over UISlider Thumb
Qualche idea ??
La "manopola" non è disponibile per API pubblica, quindi scarse possibilità di collegarlo - se è una vista secondaria e non solo disegnata direttamente.
Quindi dovresti aggiungere l'etichetta alla stessa vista del cursore (assicurati di aggiungerlo più tardi in modo che compaia su). È quindi possibile ascoltare gli eventi di modifica del valore e posizionare l'etichetta di conseguenza. È un ridimensionamento lineare tra gli endpoint che è necessario individuare all'inizio, ma non dovrebbe essere troppo difficile.
Modifica con codice:
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: codice non testato ;-)
Questo potrebbe essere molto utile ... How to get the center of the thumb image of UISlider
Prova questa
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);
}
Potrei g et valore più accurato utilizzando questo frammento.
+1 Imposta l'etichetta in movimento nella parte superiore della vista. È possibile regolare lbl.center.y per la posizione personalizzata. – HDdeveloper
Grazie per la risposta, questa riga deve essere: yourLabel.center = CGPointMake (thumbRect.origin.x + self.slider.frame.origin.x + yourLabel. frame.size.width/2.f, self.slider.frame.origin.y - 20); anche se –
è sufficiente aggiungere un'imageview sul pollice della cursore aggiungere un'etichetta sul 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];
}
Stessa risposta 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)
penso di aver capito .. ....... ma posso dare un codice di esempio ... ?? – Rony
Aggiunto codice ... – Eiko