如何使用UISlider旋转UIImageView?

时间:2018-08-08 15:59:14

标签: ios swift xcode uiimageview uislider

如果我想使用UIImageVIew来旋转UISlider,我将在函数mySliderAction下放什么?这似乎没有任何作用...

@IBOutlet weak var ball: UIImageView!
@IBOutlet weak var C: UIImageView!
@IBOutlet weak var mySlider: UISlider!

@IBAction func mySliderAction(_ sender: UISlider) {
    let rotation = SKAction.rotate(byAngle: .pi * -1, duration: TimeInterval(5.0))
    let infiniteRotation = SKAction.repeatForever(rotation)
    c.run(infiniteRotation)
}

2 个答案:

答案 0 :(得分:2)

一个CGTransform函数,将滑块的progress参数用作参数。

c.transform = CGAffineTransform(rotationAngle: sliderProgress)

请注意,sliderProgress必须为CGFloat类型,并且适用于弧度而非法线转角。因此,您必须将Slider的change参数转换为CGFloat。

然后,您必须考虑Slider的minValue产生0度的旋转,maxValue产生360度的旋转(弧度为2 * pi)。

好的。因此,请在故事板上选择滑块并按如下所示编辑其设置:enter image description here

对于360度旋转,将滑块的最小值设置为0,将最大值设置为2 * pi是很重要的。那是6,28318531。按Enter键,然后转到您的ViewController

像这样编辑您的旋转功能:

@IBAction func rotateImage(_ sender: UISlider) {
    let pram = sender.value
    image.transform = CGAffineTransform(rotationAngle: CGFloat(pram))
}

请注意!当您输入最大值6,28318531时,请确保使用这种点“,”(如逗号),而不要使用传统的点“”。 ,否则xCode将不接受该值。

还需要旋转90度,然后将maxValue更改为pi / 2(约为1.57079632679)和pi(对于180旋转为3.14159265359)。

答案 1 :(得分:0)

尝试

imageView.transform = CGAffineTransformMakeRotation(slider.value * 2*M_PI / slider.maximumValue);