动态获取imageview的位置

时间:2017-10-10 14:02:17

标签: ios iphone swift frame bounds

我需要获取图像视图的动态x,y位置。 我试过这个

self.imgView.bounds.origin.y

self.imgView.frame.origin.x

我一直都是0.0。

我怎么能得到这个?

由于

3 个答案:

答案 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