【问题标题】:Rotate UIImageView inside UIScrollView in Swift在 Swift 中的 UIScrollView 内旋转 UIImageView
【发布时间】:2018-10-01 04:45:48
【问题描述】:

我正在使用一个基本的照片编辑器,它应该可以缩放、旋转和翻转照片。我在滚动视图中使用图像视图(方面填充),它允许我轻松缩放。但是当我尝试旋转或翻转时,结果不是我所期望的。图像视图保持原始帧并且看起来像旋转图像。滚动视图缩放比例发生变化。有关如何执行此操作的任何建议?

在转换之前有关于设置图像视图锚点以匹配滚动视图锚点的建议也很棒,因为我不想在转换后显示图像的不同部分,只是显示图像的相同部分图片,但已旋转。

转换前查看堆栈:

应用旋转后查看堆栈:

到目前为止我的代码:

override func viewDidLoad() {
        super.viewDidLoad()
        scrollView.delegate = self
        setZoomScale()
        scrollView.zoomScale = scrollView.minimumZoomScale
}

@IBAction func rotateAnticlockwise(_ sender: UIButton) {
        rotationAngle -= 0.5
        transformImage()
}

func transformImage(){
        var transform = CGAffineTransform.identity
        transform = transform.rotated(by: .pi * rotationAngle)
        imageView.transform = transform
}

func setZoomScale(){
        let imageSize = imageView.image!.size
        let smallestDimension = min(imageSize.width, imageSize.height)
        scrollView.minimumZoomScale = scrollView.bounds.width / smallestDimension
        scrollView.maximumZoomScale = smallestDimension / scrollView.bounds.width
}

【问题讨论】:

  • "结果不是我所期望的" 那么您期待什么呢?目前尚不清楚这里的目标是什么。
  • 我希望 imageView 框架被转换,但它似乎只旋转图像。
  • 创建旋转版本图像的方法是旋转图像。不是图像视图。实际图像。
  • 我尝试旋转图像并使用旋转后的图像创建一个新的图像视图,然后删除旧的图像视图并添加新的图像视图。但是滚动视图根本不会更新其内容大小。即使我在运行时将内容大小设置为新的图像视图内容大小。

标签: swift uiscrollview uiimageview autolayout transform


【解决方案1】:

我认为您正在寻找,例如:

imageView.transform = CGAffineTransform(rotationAngle: 0.5)

【讨论】:

    猜你喜欢
    • 2016-03-19
    • 2012-08-06
    • 1970-01-01
    • 1970-01-01
    • 2014-12-25
    • 2012-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多