如何使用 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?的主要内容,如果未能解决你的问题,请参考以下文章

使用 CiGaussianBlur 模糊图像的 UISlider 也会旋转图像

如何制作垂直 UISlider? [复制]

如何反转 UISlider 的最小值-最大值?

UIImage 在旋转时向右移动 - 中心点错误?

如何快速制作垂直滑块?

在第一代 3.1.3 上拖动 uiScrollview 时,uiSlider 拇指图形“闪烁”