如何使用 UISlider 旋转 UIImageView?
Posted
技术标签:
【中文标题】如何使用 UISlider 旋转 UIImageView?【英文标题】:How do you rotate a UIImageView with a UISlider? 【发布时间】:2018-08-08 15:59:13 【问题描述】:如果我想通过使用UISlider
来旋转UIImageVIew
,我会在函数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)
【问题讨论】:
检索sender.value
。从中计算一些角度(但它的滑块最大值是多少?最小值?角度最大值是多少?最小值?)。以该角度执行旋转。
@Larme 最小值为 0,最大值为 1000,我不确定角度,但我想要它,所以当滑块为 0 时,角度为 0,而当达到 1000 时,它确实向右旋转一整圈。
请仅在您的问题中添加相关代码,例如不需要override func viewDidLoad() super.viewDidLoad()
@AshleyMills 对不起,我会开始这样做。
【参考方案1】:
一个 CGTransform 函数,它使用滑块的进度参数作为参数。
c.transform = CGAffineTransform(rotationAngle: sliderProgress)
请注意,sliderProgress 必须是 CGFloat 类型,并且用于弧度而不是正常角角。所以你必须将 Slider 的更改参数转换为 CGFloat。
然后您必须考虑 Slider 的 minValue 以产生 0 度的旋转,而 maxValue 产生 360 度的旋转(2 * pi 弧度)。
好的。因此,选择故事板中的滑块并编辑其设置,如下所示:
对于 360 度旋转,将滑块的最小值设置为 0 并将最大值设置为 2 * pi 值非常重要。那是 6,28318531。点击回车并转到您的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,即 3.14159265359,旋转 180 度。
【讨论】:
我将如何让sliderProgress 成为CGFloat?我已经尝试过你所说的,但是我是编码新手,所以可能不太清楚。 我马上输入代码。请查看答案的编辑。【参考方案2】:试试这个
imageView.transform = CGAffineTransformMakeRotation(slider.value * 2*M_PI / slider.maximumValue);
Swift 5 版本
imageView.transform = CGAffineTransform(rotationAngle: CGFloat(slider.value * 2 * M_PI / slider.maximumValue))
这里,M_PI
持有 π 的值。
【讨论】:
尝试突出显示关键字并明确格式,这将有助于为其他人找到答案以上是关于如何使用 UISlider 旋转 UIImageView?的主要内容,如果未能解决你的问题,请参考以下文章