2010-10-19 5 views
2

J'essaye de créer une petite application de réalité augmentée où je déplace une image au-dessus de la capture de caméra. La seule chose que je change est le centre du UIImageView:UIImageview ne se mettra pas à jour après avoir changé le centre

[imageView1 setCenter:CGPointMake(x-16, 240)];

et le centre est mis à jour, mais la position de l'image sur l'écran reste le même.

après la mise à jour du centre, c'est appelé:

[self.imageView1 performSelectorOnMainThread:@selector(setImage:) withObject:testImage waitUntilDone:YES];

Le plus drôle est que, dans la première itération il met à jour en fait la position. Mais seulement la première fois. Des idées?

+0

Désolé de le commenter mais toujours pas de réponse? J'ai le même problème – Fredv

Répondre

0

Essayez:

imageView1.center = CGPointMake(imageView1.center.x-16, 240); 
+0

x n'est pas une coordonnée, c'est une double valeur calculée à chaque itération. J'aurais dû écrire ça dans le post original. Mais quand même, quand j'écris les coordonnées du centre dans la console tout est OK. Donc je suppose que c'est un problème d'affichage. – user480295

+0

existe-t-il un moyen d'actualiser une imageview? J'ai essayé avec [imageView1 setNeedsDisplay]; mais cela ne semble pas fonctionner .... – user480295

0

La réponse acceptée dans ce post (UIImageView not responding to centering) donne à penser que le problème est autolayout, ce qui est logique.

Ce message (Can I disable autolayout for a specific subview at runtime?) explique comment désactiver la mise en page automatique pour des éléments spécifiques. Une autre réponse vous suggère d'ajouter des contraintes (pour x et y), de créer des IBOutlets pour ces constrataints et de les mettre à jour pour déplacer l'élément d'interface utilisateur.