Comment détecter quand UIImageView pivote verticalement

Je vérifie à partir de scaleY UIImageView, mais cela ne fonctionne pas (voir le code ci-dessous).

CGAffineTransform t = [myImageView transform]; // Keep masortingx value of UIImageView float scaleY1 = sqrt(tb * tb + td * td); // 1.0000 CGAffineTransform t2 = CGAffineTransformScale(t, 1, -1.0); // flip UIImageView vertically float scaleY2 = sqrt(t2.b * t2.b + t2.d * t2.d); // 1.0000 [myImageView setTransform:t2]; NSLog(@"1: %f, 2: %f", scaleY1, scaleY2); // 1: 1.0000, 2: 1.0000 

D'en haut, vous pouvez voir qu'avant et après avoir returnné UIImageView, nous avons obtenu la même "valeur scaleY".

Quelle est la valeur que nous devrions vérifier? (afin de détecter quand UIImageView se returnne verticalement)

Qu'en est-il de vérifier la propriété transform de l'imageview? Vous verrez là si la vue a été transformée. C'est ce que je vois si j'imprime la valeur de myImageView dans la console après avoir appliqué la transformation:

(lldb) po myImageView

UIImageView: 0x8f59f30; frame = (0 0; 0 0); transform = [1, 0, -0, -1, 0, 0]; userInteractionEnabled = NO;

Tu peux essayer ça

 [UIView transitionWithView: flipTile duration: 0.5 options: UIViewAnimationOptionTransitionFlipFromLeft animations:^{ flipTile.image = newTileImage; } completion:^(BOOL finished) { /* code after completion */ } ]; 

La réponse de Jay Gajjar est bien.

Mais si vous ne voulez pas animer, utilisez

 [UIView transitionWithView: flipTile duration: 0.0 options: UIViewAnimationOptionTransitionFlipFromLeft animations:^{ flipTile.image = newTileImage; } completion:^(BOOL finished) { /* code after completion */ } ];