image - 使用 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
}
}
}
}