2016-04-06 3 views
4

Я создаю несколько изображений в программном виде внутри представления (созданного в Storyboard) на двух разных частях кода в том же VC, но у меня разные результаты. Вот мой код:Изображения, отображаемые в разных размерах - 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

выше код, показывающий изображения Просмотров должным образом, но я также сохранение этих изображений в Core Data и когда я открываю эту точку зрения еще раз, а затем в viewDidLoad() Я добавил этот код:

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) 
} 

Таким образом, всякий раз, когда VC загружает изображения появляются, как это показано ниже: enter image description here

Примечание: viewForImages - это представление, которое я создал с помощью Storyboard, и запись - это объект с 3 атрибутами: образ Data1,2,3 типа двоичных данных (NSData). Теперь, когда появляется это представление, если в представлении уже есть изображения, он запускает вышеуказанный код, но первый imageView1 охватывает около 80% представления и другие 2 изображения. Представления редко появляются. Почему так?

+0

Что вы подразумеваете под редким поясом? Они скрыты случайным образом или появляются каждый раз, но размер невелик? –

+0

imageView1 охватывает большую часть вида (viewForImages). Его ширина не так, как я запрограммировал. Это намного больше. Вот почему следующие изображения отображаются почти в конце обзора. Таким образом, отображаются только 20% обоих изображений (один находится на вершине другого, как 3 изображения в Twitter). –

+1

@AksharPatel Я добавил скриншоты. Ты можешь видеть. –

ответ

1

Хорошо, так что я получил это выяснило.

В документе viewDiDLoad(), перед заявлением switch, я добавил следующую строку, и теперь она работает.

self.viewForImages.layoutIfNeeded() 
1

Попробуйте изменить режим содержания

imageView.contentMode = .ScaleAspectFill 
+0

Нет, это стало еще хуже. –

+0

Я добавил скриншоты. –

Смежные вопросы