Swift - 裁剪允许编辑*外部*的图像

标签 swift image-processing uiimagepickercontroller

我设置了一个非常非常简单的项目,允许您单击“浏览照片”按钮。然后,用户从照片库中选择一张照片,并将其显示在以编程方式创建的 UIImageView 上。

就像魅力一样。但是 - 我缺少所需的关键功能。

我需要用户能够在图像显示在 UIImageView 中之后缩放图像(通过捏合和拖动)。 allowedEditing = true,允许用户在之前进行裁剪。不过,我需要类似的功能,允许他们在主 UI 上进行编辑。

感谢帮助。请并谢谢您!!

导入UIKit

ViewController 类:UIViewController {

@IBOutlet weak var imageView: UIImageView!


var imageViewLayer: CALayer{
    return imageView.layer
}


override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
    imageViewLayer.contents = UIImage(named: "ss3.jpg")?.CGImage
    imageViewLayer.contentsGravity = kCAGravityResizeAspect

}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}



@IBAction func newGesture(sender: AnyObject) {
    imageViewLayer.transform = CATransform3DMakeScale(sender.scale, sender.scale, 1)
}

}

最佳答案

不久前我也做过类似的事情。我将图像添加到 UIImageView 的 layer 属性中,将手势识别器添加到 View 中,并实现修改图层属性而不是 View 的手势回调。将图像添加到 UIImageView 的图层就可以了。作为旁注,我想补充一点,每个 UIView 都受 CALayer 类支持。它有很多方法和属性,有助于动态更改 View ,在您的情况下,这将通过手势来完成。

作为替代方案,您还可以使用 CALayer 的 hitTest 方法,而不是实现手势识别器的回调。

编辑-示例代码

你可以做这样的事情:

   @IBOutlet weak var imageView: UIImageView!

    var imageViewLayer: CALayer{
        return imageView.layer
    }

viewDidLoad中,设置图片

imageViewLayer.contents = UIImage(named: "CoreDataDemoApp")?.CGImage
imageViewLayer.contentsGravity = kCAGravityResizeAspect

将捏合手势添加到 Storyboard中的 ImageView (或以编程方式),并在回调中您可以执行以下操作:

@IBAction func pinchGestureRecognized(sender: AnyObject) {
   imageViewLayer.transform = CATransform3DMakeScale(sender.scale, sender.scale, 1)  
}

这只是为了让您了解它如何工作,而不是完整的代码。希望这有帮助!

这是另一种方法:

Stackoverflow link to related question

关于Swift - 裁剪允许编辑*外部*的图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32039907/

相关文章:

swift - 如何创建一系列 CGPoints (SWIFT)

swift - 文本字段扩展错误 - 无法识别的选择器发送到实例 swift

ios - 以编程方式向下移动 TableView ? ( swift )

c++ - 如何使用 OpenCV 从图像中删除文本

ios - 快门后的 UIImagePickerController cameraOverlay

ios - <<和>>在swift中是什么意思

opencv - 比较大量图像的特征描述符

javascript - 使用 JavaScript 识别图像中红球的位置?

ios - UIImagePicker 始终以横向模式打开照片应用程序

ios - UIImagePickerController 在 iOS 11 上泄露