2016-03-28 14 views
2

Görüntüyü 9 parçaya ayırmaya, onları bir dizi halinde depolamaya ve ekran boyunca rasgele yeniden dağıtmaya çalışıyorum.Bir dizide saklanan UIIMages nasıl alınır ve görüntülenir?

Yeni bir UIIMageView'u programlı olarak nasıl oluşturacağımı ve arka plan rengini nasıl ayarlayacağımı anladım, böylece nerede olduğunu görebiliyorum, ancak kullanıcının görüntülenen görüntüsünün kırpılmış bir bölümünü (displayImageView.image) görüntüleyemiyorum. randomize düğmesine bastıktan sonra tiledView, UIImageView.

tileStack dizisindeki tüm döşemeleri depolamayı denedim, her parça 1/3 boyutunda displayImageView.image. Kapatma, görüntüleri nasıl dilimleme ve saklama konusunda veya dizi öğesini görünüme nasıl çağırdığım konusunda emin değil.

//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

yapmak mümkün değil UIImageViews, çalışma zamanında onları oluşturmak yerine ilk önce bir storyboard'da mı? sonra UIImageViews – Fonix

+1

CGImageCreateWithImageInRect (displayImageView.image! .CGImage, tileRect) görüntülerin konumlandırılması/atanması daha kolay olacaktır. Görüntü bir görüntü olmayan bir CGImage döndürür, ancak görüntüdeki bitmap gösterimini aşağıdaki kod kullanarak CGImage - UIImage haline dönüştürmeniz gerekir aNewUIImage = UIImage (CGImage: imageRef) –

+0

Çok teşekkürler, @AjayBeniwal! Bu benim problemimi çözdü! Evet @ Fonix, ancak birkaç UIImageViews oluşturmak için for döngüsünü kullanmak istiyorum. Yine de yorum için teşekkürler! –

cevap

0

CGImageCreateWithImageInRect (displayImageView.image;

(sonradan tüm 9 adet görüntülemek için döngü için kullanacağım sadece şimdi gösterilecek tek parça/kiremit almaya çalışıyorum.)! .CGImage, tileRect) aslında bir görüntü değil bir CGImage döndürür ama görüntüyü bitmap gösterimi aşağıdaki kodu kullanarak CGImage'ı UIImage'ye dönüştürmelisiniz var aNewUIImage = UIImage (CGImage: imageRef) - @Ajay Beniwal

İlgili konular