Как получить центр большого пальца изображения UISlider

Попробуйте что-то подобное onclick = "return self.close ()"

29
задан willc2 11 November 2009 в 10:45
поделиться

4 ответа

шаг 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)

}

0
ответ дан 27 November 2019 в 22:57
поделиться

После небольшой игры с 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);
2
ответ дан 27 November 2019 в 22:57
поделиться

Это вернет правильную позицию 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];
57
ответ дан 27 November 2019 в 22:57
поделиться

Я подошел к этому, сначала сопоставив интервал значений 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;
    }
6
ответ дан 27 November 2019 в 22:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: