C'est tout à fait l'iPhone quandry. Je travaille sur une bibliothèque, mais j'ai réduit mon problème au code très simple. Ce code crée une vue 50x50, applique une transformation de rotation de quelques degrés, puis décale le cadre plusieurs fois. Le résultat est que la vue 50x50 est maintenant beaucoup plus grande.Faire pivoter à l'aide d'une transformation, puis modifier l'origine du cadre et agrandir la vue?
Voici le code:
// a simple 50x50 view
UIView *redThing = [[UIView alloc] initWithFrame:CGRectMake(50, 50, 50, 50)];
redThing.backgroundColor = [UIColor redColor];
[self.view addSubview:redThing];
// rotate a small amount (as long as it's not 90 or 180, etc.)
redThing.transform = CGAffineTransformRotate(redThing.transform, 0.1234);
// move the view down 2 pixels
CGRect newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height);
redThing.frame = newFrame;
// move the view down another 2 pixels
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height);
redThing.frame = newFrame;
// move the view down another 2 pixels
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height);
redThing.frame = newFrame;
// move the view down another 2 pixels
newFrame = CGRectMake(redThing.frame.origin.x, redThing.frame.origin.y + 2, redThing.frame.size.width, redThing.frame.size.height);
redThing.frame = newFrame;
Alors, que diable se passe? Maintenant, si je déplace la vue en appliquant une transformation de traduction, cela fonctionne très bien. Mais ce n'est pas ce que je veux faire et ce devrait fonctionner de toute façon.
Des idées?
Peut-être que la transformation est appliquée après les quarts de travail? – Artelius