如何检索和显示存储在数组中的 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
我正在尝试将图像切割成 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