翻转[UIImage]在Swift中设置

时间:2016-03-22 18:44:50

标签: ios swift uiimageview uiimage

我想要切换两张图片,让我们称之为鱼和fisha。 UIImageView被称为播放器,因此代码如下:

@IBOutlet weak var player: UIImageView!
var images: [UIImage] = []
images.append(UIImage(named: "fish")!)
images.append(UIImage(named: "fisha")!)
player.frame = CGRectMake((screenWidth-px)/2, (screenHeight-py)/2, px, py)
player.animationImages = images
player.animationDuration = 0.7
player.startAnimating()

一切正常。但现在说我要制作第二个名为player2的UIImageView,它应该是播放器的镜像版本。

使用此功能:

func flipH(im:UIImage)->UIImage {
    var newOrient:UIImageOrientation
    switch im.imageOrientation {
    case .Up:
        newOrient = .UpMirrored
    case .UpMirrored:
        newOrient = .Up
    case .Down:
        newOrient = .DownMirrored
    case .DownMirrored:
        newOrient = .Down
    case .Left:
        newOrient = .RightMirrored
    case .LeftMirrored:
        newOrient = .Right
    case .Right:
        newOrient = .LeftMirrored
    case .RightMirrored:
        newOrient = .Left
    }
    return UIImage(CGImage: im.CGImage!, scale: im.scale, orientation: newOrient)
    }

随着对代码的修改以使player2我希望它能够正常工作。

@IBOutlet weak var player2: UIImageView!
var images: [UIImage] = []
images.append(flipH(UIImage(named: "fish")!))
images.append(flipH(UIImage(named: "fisha")!))
player2.frame = CGRectMake((screenWidth-px)/2, (screenHeight-py)/2, px, py)
player2.animationImages = images
player2.animationDuration = 0.7
player2.startAnimating()

然而,它没有。 Player2与玩家完全相同。有谁知道为什么?

谢谢, 汤姆

1 个答案:

答案 0 :(得分:0)

这是因为UIImage的orientation并不意味着你的意思。它不是某种神奇的图像变换器。如果要翻转图像,将其翻转(即使用翻转的CTM在图形上下文中绘制)。

例如,这是图像视图中显示的图像:

enter image description here

这是在图像视图中显示的从右向左翻转的相同图像:

enter image description here

底层代码涉及将第一张图像绘制到CTM翻转的图形上下文中,以获得第二张图像。