我試圖將圖像剪切成9塊,將它們存儲在一個數組中,然後在屏幕上隨機重新分配它們。如何檢索和顯示存儲在數組中的UIIMages?
我已經想出瞭如何以編程方式創建一個新的UIIMageView並設置其背景色,以便我可以看到它在哪裏,但我無法獲取用戶所選圖像的裁剪部分(displayImageView.image
)以顯示在按下randomize
按鈕後按下tiledView, UIImageView
。
我試着將tileStack
陣列中的所有瓷磚都存儲起來,每塊瓷磚的尺寸是displayImageView.image
的1/3。不知道掛斷是在我如何切片和存儲圖像,或者我如何將數組元素調入視圖。
(我只是試圖讓一個個/瓦,現在顯示;後來,我將使用一個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)
}
是不可能做出來的首先在故事板上創建UIImageView,而不是在運行時創建它們?那麼它將更容易定位/分配圖像到UIImageViews – Fonix
CGImageCreateWithImageInRect(displayImageView.image!.CGImage,tileRect)返回一個CGImage,它實際上不是圖像,而是圖像的位圖表示,您應該使用下面的代碼var將CGImage轉換爲UIImage aNewUIImage = UIImage(CGImage:imageRef) –
非常感謝,@AjayBeniwal!這解決了我的問題! 是@Fonix,但我想使用for循環來創建多個UIImageView。謝謝你的評論! –