Попробуйте что-то подобное onclick = "return self.close ()"
шаг 1: доберитесь Представление для обнаруживают положение (используйте тот же дополнительный главный комментарий of# Ovi Bortas)
@IBOutlet слабый var sliderView: UIView!
шаг 2: метка кадров набора для добавляет func setLabelThumb представления sub (slider:UISlider, value:Float) {slider.value = значение
let label = UILabel(frame: CGRect(x: slider.thumbCenterX - 20, y: slider.frame.origin.y - 25, width: 50, height: 30))
label.font = UIFont.systemFont(ofSize: 10.0)
label.textColor = UIColor.red
label.textAlignment = .center
label.text = "\(value) kg."
sliderView.addSubview(label)
}
После небольшой игры с IB и изображением большого пальца шириной 1 пиксель положение большого пальца находится именно там, где вы этого ожидали:
UIImage *thumb = [UIImage imageNamed:@"newThumbImage_64px.png"];
CGRect sliderFrame = self.slider.frame;
CGFloat x = sliderFrame.origin.x + slideFrame.size.width * slider.value + thumb.size.width / 2;
CGFloat y = sliderFrame.origin.y + sliderFrame.size.height / 2;
return CGPointMake(x, y);
Это вернет правильную позицию X центра изображения большого пальца UISlider в координатах представления:
- (float)xPositionFromSliderValue:(UISlider *)aSlider {
float sliderRange = aSlider.frame.size.width - aSlider.currentThumbImage.size.width;
float sliderOrigin = aSlider.frame.origin.x + (aSlider.currentThumbImage.size.width / 2.0);
float sliderValueToPixels = (((aSlider.value - aSlider.minimumValue)/(aSlider.maximumValue - aSlider.minimumValue)) * sliderRange) + sliderOrigin;
return sliderValueToPixels;
}
Поместите его в контроллер представления и используйте его следующим образом: (предполагается свойство с именем slider)
float x = [self xPositionFromSliderValue:self.slider];
Я подошел к этому, сначала сопоставив интервал значений UISlider в процентах, а затем взяв тот же процент от размера ползунка минус процент размера большого пальца, значение, к которому я добавил половину размера большого пальца, чтобы получить его центр.
- (float)mapValueInIntervalInPercents: (float)value min: (float)minimum max: (float)maximum
{
return (100 / (maximum - minimum)) * value -
(100 * minimum)/(maximum - minimum);
}
- (float)xPositionFromSliderValue:(UISlider *)aSlider
{
float percent = [self mapValueInIntervalInPercents: aSlider.value
min: aSlider.minimumValue
max: aSlider.maximumValue] / 100.0;
return percent * aSlider.frame.size.width -
percent * aSlider.currentThumbImage.size.width +
aSlider.currentThumbImage.size.width / 2;
}