2013-04-26 39 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 2013-04-26 14:49:11

+0

@rdelmar請看我附加的圖片 – Desmond 2013-04-29 08:58:34

回答

1

得到的是通過改變工作center.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 2014-11-25 04:46:26

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) 
    } 

注意:此代碼從左至右水平移動的標籤。