2016-03-28 58 views
2

我試圖將圖像剪切成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) 

} 
+0

是不可能做出來的首先在故事板上創建UIImageView,而不是在運行時創建它們?那麼它將更容易定位/分配圖像到UIImageViews – Fonix

+1

CGImageCreateWithImageInRect(displayImageView.image!.CGImage,tileRect)返回一個CGImage,它實際上不是圖像,而是圖像的位圖表示,您應該使用下面的代碼var將CGImage轉換爲UIImage aNewUIImage = UIImage(CGImage:imageRef) –

+0

非常感謝,@AjayBeniwal!這解決了我的問題! 是@Fonix,但我想使用for循環來創建多個UIImageView。謝謝你的評論! –

回答

0

CGImageCreateWithImageInRect(displayImageView.image! .CGImage,tileRect)返回一個CGImage,它實際上不是圖像,而是圖像的位圖表示,您應該使用下面的代碼將CGImage轉換爲UIImage var aNewUIImage = UIImage(CGImage:imageRef) - @Ajay Beniwal

相關問題