【发布时间】:2016-04-01 22:40:08
【问题描述】:
我正在尝试在触摸位置复制背景图像的一部分,然后在与裁剪部分相同的位置添加一个子视图。如果我做的正确,两个图像都会排列,你不能告诉两个 UIImageViews 在那里,但它最终看起来像下面的图片。为什么这个不排队,为什么新图放大了一点?
更新:我的 ImageView 与主视图大小相同,并且图像模式是宽高比,因此图像上方和下方的白色仍然是图像视图的一部分。
override func touchesBegan(touches: Set<UITouch>, withEvent event: UIEvent?) {
let touch = touches.first!.locationInView(view)
let rect = CGRect(origin: touch, size: CGSize(width: 90, height: 90))
let imageRef = CGImageCreateWithImageInRect(mainImageView.image!.CGImage, rect)
if imageRef != nil {
let newImage = UIImage(CGImage: imageRef!)
let bgImage = UIImageView(image: newImage)
bgImage.center = touch
self.view.addSubview(bgImage)
self.view.bringSubviewToFront(bgImage)
}
}
触摸前:
接触后:
【问题讨论】:
-
你可以使用 UIImageView-GeometryConversion 类来获得正确的接触点..这里是链接github.com/nubbel/UIImageView-GeometryConversion
-
感谢您的回复。你知道我在哪里可以找到 swift 中的示例,因为我仍然不太确定我做错了什么?
-
我试过了: let convertPoint = self.mainImageView.convertPoint(touch, toView: self.mainImageView) let rect = CGRect(origin: convertPoint, size: CGSize(width: 90, height: 90))
标签: ios xcode swift uiimageview crop