Как я могу поместить UILabel над большим пальцем UISlider ... так, чтобы при перемещении большого пальца ... UILabel также будет двигаться ... как на большом пальце ...UILabel Over UISlider Thumb
Любая идея ??
Как я могу поместить UILabel над большим пальцем UISlider ... так, чтобы при перемещении большого пальца ... UILabel также будет двигаться ... как на большом пальце ...UILabel Over UISlider Thumb
Любая идея ??
«Ручка» недоступна для общедоступного API, поэтому неплохие шансы на ее подключение - , если - это субподготовка вообще, а не только нарисованная напрямую.
Итак, вы должны добавить ярлык к тому же виду, что и ползунок (обязательно добавьте его позже, чтобы появилось над). Затем вы можете прослушивать события изменения стоимости и соответствующим образом размещать свой ярлык. Это линейное масштабирование между конечными точками, которые вам нужно выяснить сначала, но это не должно быть слишком сложно.
Редактировать с кодом:
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)];
}
Примечание: непроверенный код ;-)
Это может быть очень полезно ... How to get the center of the thumb image of UISlider
Попробуйте
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);
}
Я мог бы g et наиболее точное значение, используя этот фрагмент.
+1 Он установил движущуюся метку в верхней части представления. Вы можете настроить lbl.center.y для пользовательской позиции. – HDdeveloper
Спасибо за ваш ответ, эта строка должна быть: yourLabel.center = CGPointMake (thumbRect.origin.x + self.slider.frame.origin.x + yourLabel. frame.size.width/2.f, self.slider.frame.origin.y - 20); хоть –
Просто добавьте ImageView на большом пальце ползуна добавить ярлык на 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];
}
тот же ответ с 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)
я думаю, что я получил это .. ....... но может дать пример кода ... ?? – Rony
Добавлен код ... – Eiko