如何检索和显示存储在数组中的 UIIMage?

How to retrieve and display UIIMages stored in an array?

我正在尝试将图像切割成 9 块,将它们存储在一个数组中,然后在屏幕上随机重新分布它们。

我已经想出如何以编程方式创建一个新的 UIIMageView 并设置它的背景颜色以便我可以看到它的位置,但是我无法获得用户所选图像的裁剪部分 (displayImageView.image ) 在按下 randomize 按钮后显示在 tiledView, UIImageView 中。

我尝试将所有图块存储在 tileStack 数组中,每个图块的大小是 displayImageView.image 的 1/3。不确定是我如何切片和存储图像,还是我如何将数组元素调用到视图中。

(我现在只想显示一个 piece/tile;稍后我将使用 for 循环显示所有 9 个。)

//Beginning of function to cut photo into 9 tiles, then randomize them. 

//Cut selected image into 9 pieces and add each cropped image to tileStack array. 

@IBAction func randomize(sender: AnyObject) {

let tileSize = CGSizeMake(displayImageView.image!.size.width/3, displayImageView.image!.size.height/3)

    for (var rowI = 0; rowI < 3; rowI++)
    {
        for (var colI = 0; colI < 3; colI++)
        {
            let tileRect = CGRectMake(CGFloat(rowI) * tileSize.width, tileSize.height * CGFloat(colI), tileSize.width, tileSize.height)

            let tileImage = CGImageCreateWithImageInRect(displayImageView.image!.CGImage, tileRect)

            if let selectedImage = displayImageView.image
            {
                let tileImage = CGImageCreateWithImageInRect(selectedImage.CGImage, tileRect)
                tileStack.append(tileImage!)
            }

        }
    }

    //display tiles in order on screen

    var tiledView : UIImageView
    tiledView = UIImageView(frame:CGRectMake(50, 150, 100, 100))
    tiledView.backgroundColor = UIColor.redColor()
    tiledView.center = CGPointMake(150, 150)
    tiledView.image = tileStack[3] as? UIImage
    self.view.addSubview(tiledView)

}

CGImageCreateWithImageInRect(displayImageView.image!.CGImage, tileRect) returns CGImage 实际上不是图像而是图像的位图表示,您应该使用以下代码将 CGImage 转换为 UIImage var aNewUIImage = UIImage( CGImage:imageRef) – @Ajay Beniwal