如果我想使用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)
}
答案 0 :(得分:2)
一个CGTransform函数,将滑块的progress参数用作参数。
c.transform = CGAffineTransform(rotationAngle: sliderProgress)
请注意,sliderProgress必须为CGFloat类型,并且适用于弧度而非法线转角。因此,您必须将Slider的change参数转换为CGFloat。
然后,您必须考虑Slider的minValue产生0度的旋转,maxValue产生360度的旋转(弧度为2 * pi)。
对于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);