2013-04-26 2 views
1

Мне нравится перемещать слайдер вместе с изображением большого пальца в вертикальном направлении. Однако движение было неправильным.как перемещать UILabel с ползунком в вертикальном

в горизонтальной он работает отлично, но не вертикально

- (void)viewDidLoad 
{ 
CGAffineTransform trans = CGAffineTransformMakeRotation(-M_PI * 0.5); 
self.SDSlider.transform = trans; 
} 

- (IBAction)sliderValueChanged:(UISlider *)sender 
{ 
    self.SDlabel.text = [NSString stringWithFormat:@"%d", (int)sender.value]; 

    CGRect trackRect = [self.SDSlider trackRectForBounds:self.SDSlider.bounds]; 
    CGRect thumbRect = [self.SDSlider thumbRectForBounds:self.SDSlider.bounds 
              trackRect:trackRect 
               value:self.SDSlider.value]; 

    self.testSDlabel.center = CGPointMake(thumbRect.origin.x + self.SDSlider.frame.origin.x, self.SDSlider.frame.origin.y - 20); 
    self.testSDlabel.text = [NSString stringWithFormat:@"%.0f", self.SDSlider.value]; 
} 

метка смещается слева направо вместо Боттона к вверх

enter image description here

enter image description here

+0

Что случилось? Что ты видишь? – rdelmar

+0

@rdelmar см. Мои прикрепленные изображения – Desmond

ответ

1

Got работает путем изменения значение центра.y

- (IBAction)sliderValueChanged:(UISlider *)sender 
{ 
    self.SDlabel.text = [NSString stringWithFormat:@"%d", (int)sender.value]; 


    CGRect trackRect = [self.SDSlider trackRectForBounds:self.SDSlider.bounds]; 
    CGRect thumbRect = [self.SDSlider thumbRectForBounds:self.SDSlider.bounds 
              trackRect:trackRect 
               value:self.SDSlider.value]; 

    self.SDlabel.text = [NSString stringWithFormat:@"%.0f", self.SDSlider.value]; 

    NSLog(@"thumbRect.origin.x %f",thumbRect.origin.x); 
    NSLog(@"self.testSDlabel %f",self.SDlabel.center.x);  
    self.SDlabel.center = CGPointMake(self.SDlabel.center.x, 423 - thumbRect.origin.x); 

} 
+0

Это в основном привело меня туда, где мне нужно было прикрепить горизонтальный слайдер – AWrightIV

0

Сначала установите начальный центр этикетки в viewdidLoad в

override func viewDidLoad() { 
     super.viewDidLoad() 
     initialLabelCenter = labelSliderValue.center.x 
    } 

    //Set value of slider into label from 100 to 1000 
    @IBAction func sliderActionValueChanged(_ sender: UISlider) { 
     let currentValue: CGFloat = CGFloat(sender.value) 
     labelSliderValue.text = String(describing: currentValue) 

     //Returns the drawing rectangle for the slider’s track 
     let trackRect = sliderInstance.trackRect(forBounds: sliderInstance.bounds) 

     //Returns the drawing rectangle for the slider’s thumb image. 
     let sliderThumbRect = sliderInstance.thumbRect(forBounds: sliderInstance.bounds, trackRect: trackRect, value: sliderInstance.value) 

     //Set label's center to move in a particular direction. In this case it will move left to right horizontally 
     labelSliderValue.center = CGPoint(x: initialLabelCenter + sliderThumbRect.origin.x, y: self.labelSliderValue.center.y) 
    } 

ПРИМЕЧАНИЕ: Этот код перемещает метку слева направо по горизонтали.

Смежные вопросы