我有一个非常简单的项目设置,允许您单击“浏览照片”按钮。然后,用户从他们的照片库中选择一张照片,并将其显示在以编程方式创建的UIImageView上。
像魅力一样工作。但是 - 我缺少必需的关键功能。
我需要用户能够在显示在UIImageView中之后缩放图像(通过捏合和拖动)。 allowsEditing = 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)
}
}
答案 0 :(得分:0)
我做了类似的事情。我将图像添加到UIImageView的图层属性中,为视图添加了手势识别器,并实现了修改图层属性而不是视图的手势回调。将图像添加到UIImageView的图层就可以了。作为旁注,我想补充说CALayer类支持每个UIView。它有很多方法和属性可以帮助动态更改视图,在您的情况下将通过手势完成。
作为替代方案,您还可以使用CALayer的 hitTest 方法,而不是实现手势识别器的回调。
编辑 - 示例代码
你可以这样做:
@IBOutlet weak var imageView: UIImageView!
var imageViewLayer: CALayer{
return imageView.layer
}
在 viewDidLoad 中,设置图片
imageViewLayer.contents = UIImage(named: "CoreDataDemoApp")?.CGImage
imageViewLayer.contentsGravity = kCAGravityResizeAspect
在故事板中(或以编程方式)向图像视图添加捏合手势,在其回调中,您可以执行以下操作:
@IBAction func pinchGestureRecognized(sender: AnyObject) {
imageViewLayer.transform = CATransform3DMakeScale(sender.scale, sender.scale, 1)
}
同样,这只是为了让您了解它是如何工作的,而不是完整的代码。希望这有帮助!
这是另一种方法: