【问题标题】:rotate imageView and its UIImage together一起旋转 imageView 和它的 UIImage
【发布时间】:2021-08-26 13:35:52
【问题描述】:

我正在尝试同时旋转 imageView 及其 UIImage 以获得更好的动画行为 第一次旋转时效果很好,但是当我再次旋转时图像没有改变,我做错了什么?

let imageToRotate =  UIImageView()

@objc func rotateImageButtonTapped() {
    UIView.animate(withDuration: 0.3, animations: {
        let rotatedTransform = imageToRotate.transform.rotated(by: CGFloat.pi / 2)
        imageToRotate.transform = rotatedTransform
    })
   
    let image = imageToRotate.image

    DispatchQueue.global(qos: .userInteractive).async {
        let rotatedImage = image?.rotate(radians: .pi / 2)
           page.isRotated = .rotated(rotatedImage: rotatedImage?.jpegData(compressionQuality: 1) ?? Data())
    }
   
}

【问题讨论】:

  • 为什么要同时旋转图像和视图?只需删除 DispatchQueue 块,它应该可以正常工作。如果它不起作用,请显示您在代码中调用“rotateImageButtonTapped”的位置。
  • .rotate 不是UIImage 方法...你的image?.rotate(radians: .pi / 2) 应该做什么?
  • @DonMag 我试着用这个stackoverflow.com/a/47402811/9872175旋转它
  • @FelipeCruzV10 我正在旋转两者以获得更好的动画效果,也在我的代码中的某个地方我只需要 UIImage,如果我从我的 imageView 获取它就无法访问“rotateImageButtonTapped”只是一个按钮跨度>
  • 如果只旋转图像视图,动画看起来不错。更好的动画是什么意思?我询问了函数的调用,因为我正在尝试你的代码,每次点击它都会很好地旋转......

标签: ios swift uiimageview uiimage


【解决方案1】:

这段代码:

UIView.animate(withDuration: 0.3, animations: {
    let rotatedTransform = imageToRotate.transform.rotated(by: CGFloat.pi / 2)
    imageToRotate.transform = rotatedTransform
})

旋转UIImage - 它旋转图像视图。

所以,当你这样做时:

let image = imageToRotate.image

您将获得分配给图像视图的原始图像。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多