2016-04-06 33 views
4

Aynı VC'deki kodun 2 farklı bölümündeki bir görünümde (Storyboard'da oluşturulan) programatik olarak program görüntülerini bazı görünümler oluşturuyorum, ancak farklı sonuçlar alıyorum. İşte benim kodudur:Farklı boyutlarda görüntülenen Resim Görüntüleme Sayısı - Swift

var images: Int? 

func imagePickerController(picker: UIImagePickerController, didFinishPickingMediaWithInfo info: [String : AnyObject]) { 

switch images { 

    case 0: 
     imagesCount = countImages.noImage 

    case 1: 
     imageView1 = UIImageView(frame: CGRect(x: 0, y: 0, width: Int((viewForImages.frame.width)), height: Int((viewForImages.frame.height)))) 
     imageView1.image = UIImage(data: imageData1!) 

     viewForImages.addSubview(imageView1) 


    case 2: 
     for view in self.viewForImages.subviews { 
      view.removeFromSuperview() 
     } 
     imageView1 = UIImageView(frame: CGRect(x: 0, y: 0, width: Int((viewForImages.frame.width)/2) - 1, height: Int((viewForImages.frame.height)))) 
     imageView1.image = UIImage(data: imageData1!) 
     viewForImages.addSubview(imageView1) 

     imageView2 = UIImageView(frame: CGRect(x: Int(imageView1.frame.width) + 1, y: 0, width: Int((viewForImages.frame.width)/2), height: Int(viewForImages.frame.height))) 
     imageView2.image = UIImage(data: imageData2!) 

     viewForImages.addSubview(imageView2) 



    case 3: 
     for view in self.viewForImages.subviews { 
      view.removeFromSuperview() 
     } 
     imageView1 = UIImageView(frame: CGRect(x: 0, y: 0, width: Int((viewForImages.frame.width)/2) - 1, height: Int((viewForImages.frame.height)))) 
     imageView1.image = UIImage(data: imageData1!) 
     viewForImages.addSubview(imageView1) 

     imageView2 = UIImageView(frame: CGRect(x: Int((viewForImages.frame.width)/2) + 1, y: 0, width: Int((viewForImages.frame.width)/2), height: Int((viewForImages.frame.height)/2) - 1)) 
     imageView2.image = UIImage(data: imageData2!) 

     viewForImages.addSubview(imageView2) 

     imageView3 = UIImageView(frame: CGRect(x: Int((viewForImages.frame.width)/2) + 1, y: Int(imageView2.frame.height) + 1, width: Int((viewForImages.frame.width)/2), height: Int((viewForImages.frame.height))/2)) 
     imageView3.image = UIImage(data: imageData3!) 

     viewForImages.addSubview(imageView3) 

    default: 
     break 

    } 
} 

Images appear like this

Yukarıdaki kod düzgün görüntü Görüntüleme gösteriyor ama ben de Çekirdek veri bu görüntüleri kaydetme ve am yine bu görünüm açtığınızda, daha sonra viewDidLoad() enter image description here

: VC yükler, görüntüler aşağıda böyle görünür olduğunda, Yani

override func viewDidLoad() { 
    super.viewDidLoad() 
      self.imageView1 = UIImageView(frame: CGRect(x: 0, y: 0, width: Int((viewForImages.frame.width)/2) - 1, height: Int((viewForImages.frame.height)))) 

      if let data = entry.imageData1 { 
       self.imageView1.image = UIImage(data: data) 
      } 
      viewForImages.addSubview(imageView1) 

      self.imageView2 = UIImageView(frame: CGRect(x: Int((viewForImages.frame.width)/2) + 1, y: 0, width: Int((viewForImages.frame.width)/2), height: Int((viewForImages.frame.height)/2) - 1)) 

      if let data = entry.imageData2 { 
       self.imageView2.image = UIImage(data: data) 
      } 
      viewForImages.addSubview(imageView2) 

      self.imageView3 = UIImageView(frame: CGRect(x: Int((viewForImages.frame.width)/2) + 1, y: Int(imageView2.frame.height) + 1, width: Int((viewForImages.frame.width)/2), height: Int((viewForImages.frame.height))/2)) 
      if let data = entry.imageData3 { 
       self.imageView3.image = UIImage(data: data) 
      } 
      viewForImages.addSubview(imageView3) 
} 

: Ben bu kodu eklemiş

Not: viewForImages, Storyboard'u kullanarak oluşturduğum görünümdür ve giriş, 3 özniteliği olan bir varlıktır: image Veri1,2,3, İkili Veri (NSData). Şimdi, bu görünüm belirdiğinde, Görünümün zaten görüntüleri varsa, yukarıdaki kodu çalıştırır, ancak ilk önce imageView1, görünümün yaklaşık% 80'ini kaplar ve diğer 2 adet resim Görünümü nadiren görüntülenir. Neden öyle?

+0

Nadiren ne demek istiyorsun? Rastgele gizlendiler mi ya da her zaman ortaya çıkıyorlar ama boyut küçük mü? –

+0

imageView1, görünümün çoğunu kapsar (viewForImages). Onun genişliği, programladığım gibi değil. Bundan daha fazlası var. Bu yüzden bir sonraki görüntü görüntüleri neredeyse görüş alanının sonunda görünür. Bu yüzden, her iki resmin sadece% 20'si görünür (bir tanesi diğerinin üstünde, Twitter'da 3 resim gibi). –

+1

@AksharPatel Ekran görüntülerini ekledim. Görebilirsin. –

cevap

1

Tamam içerik modunu değiştirmek için, bu yüzden anladı.

viewDiDLoad() yönteminde, switch ifadesinden önce, aşağıdaki satırı ekledim ve şimdi çalışıyor.

self.viewForImages.layoutIfNeeded() 
1

deneyin

imageView.contentMode = .ScaleAspectFill 
+0

Hayır, daha da kötüleşti. –

+0

Ekran görüntülerini ekledim. –