2017-10-10 5 views
1

Je dois obtenir la position dynamique x, y de l'image. Je l'ai essayéObtenir la position de l'imageview dynamiquement

self.imgView.bounds.origin.y

et

self.imgView.frame.origin.x

Je reçois tout le temps 0.0.

Comment puis-je obtenir ceci?

Merci

+0

affichez votre imageview sur le storyboard. avez-vous ajouté imageview de (0,0) dans le storyboard? –

+0

Que voulez-vous dire par "dynamique"? – kirander

+0

Je pense que vous avez besoin de position UIImage? –

Répondre

1

Le bounds.origin d'une vue devrait être (0 , 0) à tout moment puisque c'est le système de coordonnées de la vue elle-même (par rapport à son origine)

Le frame.origin est dans le système de coordonnées de sa superview, donc si c'est 0,0, alors cela pourrait être que son origine est à l'origine de sa superview. Peut-être que vous voulez connaître l'origine par rapport à l'écran? Si oui,

let posInWindow = v.convert(v.bounds.origin, to: nil) 
+1

Merci! J'ai eu ça :) – user12346

0

S'il vous plaît utiliser ci-dessous pour obtenir le code rect dans UIImageVIew Ce code swift3 Et votre ImageViewContentMode doit être Aspect adapter

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 
} 
0

Les limites retourneront toujours un x et y de 0, vous voulez utiliser l'image. Dans votre exemple, ces valeurs peuvent être correctes? Essayez d'ajouter votre imageView au centre de la vue et en enregistrant le:

self.imgView.frame.origin.x 
self.imgView.frame.origin.y