随机旋转 imageView

Posted

技术标签:

【中文标题】随机旋转 imageView【英文标题】:Rotate imageView random 【发布时间】:2015-06-20 21:22:12 【问题描述】:

我试图让图像视图在 360 到 720 之间旋转随机度数。所以我希望图像视图旋转一次(360 度),然后再次旋转随机度数(0 到 360)

func rotateRandom2()
    let lower : UInt32 = 360
    let upper : UInt32 = 720
    let diceRoll = CGFloat(arc4random_uniform(upper - lower) + lower)
    let degree =  0.0174532925 as CGFloat
    let rotate = diceRoll
    UIView.animateWithDuration(1, delay: 0.0, options: UIViewAnimationOptions.CurveEaseOut,      animations:  () -> Void in
        self.bottleImageView.transform = CGAffineTransformRotate(self.bottleImageView.transform, rotate)
        , completion: nil)

【问题讨论】:

第一:值应该是弧度,意思是 0 - 2PI 而不是 0 - 360。第二:您可能必须使用 CABasicAnimation 并指定它是附加动画。 @luk2302 - 我不知道该怎么做(?) ***.com/questions/17426802/… 你不应该用degree乘以一些东西。 let rotate = diceRoll * degree 或许? 您尝试过的方法遇到了哪些问题?从其他 cmets 看来,您想找到我们的弧度和度数之间的差异,以及用于旋转的。 【参考方案1】:

您可以使用 CABasicAnimation 为 z 旋转设置动画。你可以这样做:

let rotateView = CABasicAnimation()
let randonAngle = arc4random_uniform(361) + 360
rotateView.fromValue = 0
rotateView.toValue = Float(randonAngle) * Float(M_PI) / 180.0
rotateView.duration = 1
rotateView.repeatCount = 0
rotateView.removedOnCompletion = false
rotateView.fillMode = kCAFillModeForwards
rotateView.timingFunction = CAMediaTimingFunction(name: kCAMediaTimingFunctionEaseOut)
view.layer.addAnimation(rotateView, forKey: "transform.rotation.z")

【讨论】:

好一个!谢谢。一个快速的问题:如何在不使用计时器的情况下检测 imageView 是否停止旋转? 我从未使用过Objective-C。我只使用过 Swift,所以我不知道如何为 Swift 使用该代码。 随意打开另一个问题,询问如何将完成处理程序添加到 cabasic 动画。如果该答案回答了您的原始问题,请不要忘记选中投票计数器下方的复选标记 您也可以使用延迟功能在特定时间后执行您想要的操作,在这种情况下完成轮换的时间 @JamesOfferd 注意:如果你想要 720 包括在内,你需要使用 arc4random_uniform(361) + 360

以上是关于随机旋转 imageView的主要内容,如果未能解决你的问题,请参考以下文章

js设置图片随机旋转角度

伪随机数生成算法-梅森旋转(Mersenne Twister/MT)

使用TensorFlow对图像进行随机旋转的实现示例

使用TensorFlow对图像进行随机旋转的实现示例

如何在张量流中随机旋转不同角度的图像

JQUERY 随机多引号旋转器需要调整