Làm thế nào tôi có thể đặt một UILabel trên ngón tay cái của UISlider ... để khi tôi di chuyển ngón tay cái .... UILabel cũng sẽ di chuyển .... như nó là trên ngón tay cái ...UILabel Over UISlider Thumb
Bất kỳ ý tưởng nào ??
Làm thế nào tôi có thể đặt một UILabel trên ngón tay cái của UISlider ... để khi tôi di chuyển ngón tay cái .... UILabel cũng sẽ di chuyển .... như nó là trên ngón tay cái ...UILabel Over UISlider Thumb
Bất kỳ ý tưởng nào ??
Nút "không khả dụng cho mỗi API công khai, vì vậy cơ hội không tốt để gắn nó lên - nếu đó là một chế độ xem phụ và không chỉ được vẽ trực tiếp.
Vì vậy, bạn nên thêm nhãn cho cùng một chế độ xem với thanh trượt (đảm bảo bạn thêm nhãn sau để xuất hiện trên nó). Sau đó, bạn có thể lắng nghe các sự kiện thay đổi giá trị và đặt nhãn của bạn cho phù hợp. Nó là tỷ lệ tuyến tính giữa các điểm cuối mà bạn cần tìm ra lúc đầu, nhưng nó không quá khó.
Sửa với mã:
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)];
}
Lưu ý: Mã chưa được kiểm tra ;-)
Điều này có thể rất hữu ích ... How to get the center of the thumb image of UISlider
Hãy thử điều này
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);
}
Tôi có thể g và giá trị chính xác nhất bằng cách sử dụng đoạn mã này.
+1 Nó đặt nhãn di chuyển trên đầu Chế độ xem. Bạn có thể điều chỉnh lbl.center.y cho vị trí tùy chỉnh .. – HDdeveloper
Cảm ơn câu trả lời của bạn, dòng này phải là: yourLabel.center = CGPointMake (thumbRect.origin.x + self.slider.frame.origin.x + yourLabel. frame.size.width/2.f, self.slider.frame.origin.y - 20); Tuy nhiên –
Chỉ cần thêm một ImageView vào ngón tay cái của thanh trượt thêm một nhãn trên 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];
}
Cùng câu trả lời với 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)
tôi nghĩ rằng tôi đã nhận nó .. ....... nhưng có thể cung cấp mã mẫu ... ?? – Rony
Đã thêm một số mã ... – Eiko