我需要获取图像视图的动态x,y位置。 我试过这个
self.imgView.bounds.origin.y
和
self.imgView.frame.origin.x
我一直都是0.0。
我怎么能得到这个?
由于
答案 0 :(得分:1)
任何视图的bounds.origin应始终为(0,0),因为它是视图本身的坐标系(相对于其原点)
frame.origin位于其superview的坐标系中,所以如果它是0,0,则可能是它的原点位于其superview的原点。
也许您想了解屏幕的来源?如果是的话,
let posInWindow = v.convert(v.bounds.origin, to: nil)
答案 1 :(得分:0)
请使用以下代码在UIImageVIew
中获取矩形
此代码在 swift3 中,而您的ImageViewContentMode应该是Aspect fit
func calculateRectOfImageInImageView(imageView: UIImageView) -> CGRect {
let imageViewSize = imageView.frame.size
let imgSize = imageView.image?.size
guard let imageSize = imgSize, imgSize != nil else {
return CGRect.zero
}
let scaleWidth = imageViewSize.width / imageSize.width
let scaleHeight = imageViewSize.height / imageSize.height
let aspect = fmin(scaleWidth, scaleHeight)
var imageRect = CGRect(x: 0, y: 0, width: imageSize.width * aspect, height: imageSize.height * aspect)
// Center image
imageRect.origin.x = (imageViewSize.width - imageRect.size.width) / 2
imageRect.origin.y = (imageViewSize.height - imageRect.size.height) / 2
// Add imageView offset
imageRect.origin.x += imageView.frame.origin.x
imageRect.origin.y += imageView.frame.origin.y
return imageRect
}
答案 2 :(得分:0)
Bounds将始终返回x和y为0,您想要使用frame。在您的示例中,这些值可能是正确的?尝试在视图中心添加imageView并记录:
self.imgView.frame.origin.x
self.imgView.frame.origin.y