Iphone 如何使用滑块垂直移动UILabel

Iphone 如何使用滑块垂直移动UILabel,iphone,ios,xcode,uilabel,uislider,Iphone,Ios,Xcode,Uilabel,Uislider,我想在垂直方向上移动滑块和拇指图像。然而,移动是错误的 在水平方向上,它工作得很好,但在垂直方向上却不行 - (void)viewDidLoad { CGAffineTransform trans = CGAffineTransformMakeRotation(-M_PI * 0.5); self.SDSlider.transform = trans; } - (IBAction)sliderValueChanged:(UISlider *)sender { self.SDlabe

我想在垂直方向上移动滑块和拇指图像。然而,移动是错误的

在水平方向上,它工作得很好,但在垂直方向上却不行

- (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];  
}
标签从左向右移动,而不是从波顿向上移动


通过更改中心.y值,Got正在工作

- (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);

}

通过更改中心.y值,Got正在工作

- (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);

}

首先将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)
    }

注意:此代码将标签从左到右水平移动。

首先将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)
    }

注意:此代码将标签从左到右水平移动。

怎么了?你看到了什么?@rdelmar请看我随附的图片有什么问题?你看到了什么?@rdelmar请看我的附加图像这基本上让我达到了需要连接到水平滑块的位置这也基本上让我达到了需要连接到水平滑块的位置