2016-12-11 17 views
1

На моей раскадровке у меня есть 2 изображения. Один из них содержит основное изображение, второе - наложение, которое будет использоваться для указания области обрезки основного изображения.Swift программно помещает UIImageView поверх другого и изменяет размер

В моем представленииDidLoad Я сделал это.

let screen_width = UIScreen.mainScreen().bounds.width 
let screen_height = UIScreen.mainScreen().bounds.height 
self.overlayImage.frame = CGRect(x: self.imageView.frame.origin.x, y: self.imageView.frame.origin.y, width: screen_width, height: (screen_height * 0.1919)) 

Цель состоит в том, чтобы верхний левый угол overlayImage выстроились правильно с верхнего левого угла ImageView в. Также высота наложения должна быть около 1/5 от размера экранов. Однако, когда я запускаю код, overlayImage имеет точно такой же размер и в том же самом месте он был первоначально на раскадровке.

Как я могу программно выстроить его поверх изображенияПросмотр после того, как изображение было настроено на него, а также изменить размер overlayImage динамически в viewDidload? Я бы просто сделал это вручную в редакторе раскадровки, но каждый будет иметь разные размеры экрана, поэтому я решил, что лучше использовать переменную mainscreen(). Bounds.height, чтобы определить динамическую высоту динамического уровня во время выполнения.

ответ

0

Поскольку вы работаете со Storyboard, я бы предпочел использовать Autolayout и Constraints для решения этой проблемы для меня ... Например, вы устанавливаете ограничения для своего первого изображения, а затем устанавливаете ограничения на основе оверлея и связанные с ним к первому. Пример:

  • Нижняя UIImageView: набор ведущего, задний, верхние и нижнего ограничение
  • Накладки: множество центр X и Y ограничения равные нижних изображений
  • Накладка: установить высоту и ширину, чтобы быть пропорционально на нижнем изображении

Таким образом, когда-либо изменения размера экрана, два изображения всегда будет изменять размеры в равной степени ...

0

строитель Интерфейс:

  1. Установить сверху сверху, ведущий, ширину до вашего изображения.
  2. дать вашему наложению постоянное ограничение по высоте; значение ограничения cosntant произвольно, потому что вы будете заменить его во время выполнения
  3. Ctrl + перетащить IBOutlet с этой высоты ограничения на ваш ViewController
  4. в ваших viewWillLayoutSubViews установить .constant вашей высоты ограничения на UIScreen.main.bounds. size.height/5
3

Все, что вам нужно сделать, это написать свой код выше в viewDidAppear вместо viewDidLoad, как показано ниже: -

override func viewDidAppear(animated: Bool) { 
    let screen_width = UIScreen.mainScreen().bounds.size.width 
    let screen_height = UIScreen.mainScreen().bounds.size.height 
    self.overlayImage.frame = CGRect(x: 0, y: 0, width: screen_width, height:screen_height/5) 
} 

И ваш кадр будет установить себя в качестве лучшего.