微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 Swift5 在 iOS 中裁剪、旋转、调整图像大小

如何解决使用 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
            }
        }
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。