1

我从 UIImageView 的 scaleY 进行检查,但它不起作用(参见下面的代码)。

CGAffineTransform t = [myImageView transform]; // Keep matrix value of UIImageView
float scaleY1 = sqrt(t.b * t.b + t.d * t.d);   // 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

从上面可以看到,在我们翻转 UIImageView 之前和之后,我们得到了相同的“scaleY 值”。

我们应该检查的值是多少?(为了检测 UIImageView 何时垂直翻转)

4

3 回答 3

0

你可以试试这个

[UIView transitionWithView: flipTile
                  duration: 0.5
                   options: UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{
                    flipTile.image = newTileImage;
                }
                completion:^(BOOL finished) {
                    /*
                        code after completion
                    */
                }
 ];
于 2013-11-08T09:23:59.157 回答
0

检查 imageview 的变换属性怎么样?如果视图已被转换,您将在那里看到。这是我在应用转换后在控制台中打印 myImageView 的值时看到的:

(lldb) po myImageView

UIImageView: 0x8f59f30; 帧 = (0 0; 0 0); 变换 = [1, 0, -0, -1, 0, 0]; 用户交互启用 = 否;

于 2013-11-08T09:22:56.107 回答
0

jay gajjar 的回答很好。

但是,如果您不想制作动画,请使用

[UIView transitionWithView: flipTile
                  duration: 0.0
                   options: UIViewAnimationOptionTransitionFlipFromLeft
                animations:^{
                    flipTile.image = newTileImage;
                }
                completion:^(BOOL finished) {
                    /*
                        code after completion
                    */
                }
 ];
于 2013-11-08T09:35:07.063 回答