首页 > 解决方案 > 使用 Swift5 在 iOS 中裁剪、旋转、调整图像大小

问题描述

我以编程方式添加了一个图像视图,它使用纵横比。当用户选择图像时,我想裁剪、旋转和调整该图像的大小。我在这里浏览了一些代码,但没有任何帮助。我在这里发布我的代码以便更好地理解。非常感谢您的帮助。谢谢你。

代码: CanvasViewController : - 纵横比来自上一个屏幕。所选图像以其纵横比显示在画布屏幕上[先前选择]。现在我想显示所选图像的裁剪、调整大小和旋转功能。

import UIKit

class CanvasViewController: UIViewController, UIPopoverPresentationControllerDelegate {
    
    @IBOutlet weak var midBtn: UIButton!
    @IBOutlet weak var canvasView: UIView!
    var aspectRatio: CGFloat = 0.0
    var viewColor = UIColor()
    var imagesForGallery = [UIImage]()
    var imageForPexel = UIImage()
    
    override func viewDidLoad() {
        super.viewDidLoad()
        midBtn.addTarget(self, action: #selector(tapped), for: .touchUpInside)
        createCanvasOnAspectRatio()
    }
    
    @objc private func tapped() {
        let popVC = storyboard?.instantiateViewController(withIdentifier: "ModalViewController") as! ModalViewController
        popVC.modalPresentationStyle = .popover
        let popOverVC = popVC.popoverPresentationController
        popOverVC?.delegate = self
        popOverVC?.sourceView = self.midBtn
        popOverVC?.sourceRect = CGRect(x: self.midBtn.bounds.midX, y: self.midBtn.bounds.minY, width: 0, height: 0)
        popOverVC?.permittedArrowDirections = .down
        popVC.preferredContentSize = CGSize(width: 300, height: 50)
        self.present(popVC, animated: true)
    }

    func adaptivePresentationStyle(for controller: UIPresentationController) -> UIModalPresentationStyle {
        return .none
    }
    
    func createCanvasOnAspectRatio() {
        let View1: UIView = {
            let viewView = UIView()
            viewView.translatesAutoresizingMaskIntoConstraints = false
            viewView.contentMode = .scaleAspectFit
            print(UserDefaults.standard.bool(forKey: "backgroundColourSelected"))
            if UserDefaults.standard.bool(forKey: "backgroundColourSelected") {
                viewView.backgroundColor = self.viewColor
            }else {
                viewView.backgroundColor = .white
            }
            viewView.clipsToBounds = true
            return viewView
        }()
        
        self.canvasView.addSubview(View1)
        
        View1.centerXAnchor.constraint(equalTo: canvasView.centerXAnchor, constant: 0).isActive = true
        View1.centerYAnchor.constraint(equalTo: canvasView.centerYAnchor, constant: 0).isActive = true
        View1.widthAnchor.constraint(equalTo: canvasView.widthAnchor, constant: 0).isActive = true
        View1.heightAnchor.constraint(equalTo: canvasView.widthAnchor, multiplier: aspectRatio).isActive = true
        
        if UserDefaults.standard.bool(forKey: "imageSelectedFromGallexy") == true {

            for item in 0..<self.imagesForGallery.count {
                let image = imagesForGallery[item]
                print(image)
                let image_View: UIImageView = {
                    let imageV = UIImageView()
                    imageV.image = image
                    imageV.contentMode = .redraw
                    imageV.translatesAutoresizingMaskIntoConstraints = false
                    imageV.clipsToBounds = true
                    return imageV
                }()

                View1.addSubview(image_View)
                
                image_View.centerXAnchor.constraint(equalTo: canvasView.centerXAnchor, constant: 0).isActive = true
                image_View.centerYAnchor.constraint(equalTo: canvasView.centerYAnchor, constant: 0).isActive = true
                image_View.widthAnchor.constraint(equalTo: canvasView.widthAnchor, constant: 0).isActive = true
                image_View.heightAnchor.constraint(equalTo: canvasView.widthAnchor, multiplier: aspectRatio).isActive = true
            }
        }
    }
}

标签: imagerotationresizecropswift5

解决方案


推荐阅读