在Swift中的UIScrollView中旋转UIImageView

时间:2018-04-20 12:53:03

标签: swift uiscrollview uiimageview autolayout transform

我正在使用一个基本的照片编辑器,它可以放大,旋转和翻转照片。我在滚动视图中使用图像视图(宽高比填充),这使我可以轻松缩放。但是当我尝试旋转或翻转时,结果并不是我所期望的。图像视图保留原始帧并且看起来像旋转图像。滚动视图缩放比例更改。有关如何做到这一点的任何建议吗?

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

转换前查看堆栈: enter image description here

应用旋转后查看堆栈: enter image description here

到目前为止我的代码:

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
}

1 个答案:

答案 0 :(得分:0)

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

imageView.transform = CGAffineTransform(rotationAngle: 0.5)