2016-12-11 73 views
1

在我的故事板上,我有2個圖像視圖。 一個包含主圖像,第二個覆蓋圖將用於指定主圖像的裁剪區域。Swift以編程方式將UIImageView放在另一個上面並調整大小

在我的viewDidLoad中,我已經這樣做了。

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的尺寸完全相同,並且原本位於故事板上的相同位置。

我如何編程排隊它的ImageView的頂部後的圖像已被設置爲它,並在viewDidLoad中動態調整位於overlayImage? 我只是在故事板編輯器中手動執行它,但每個人都會有不同的屏幕尺寸,所以我認爲最好使用mainscreen().bounds.height變量來確定在運行時動態使用的高度。

回答

0

由於您正在使用Storyboard,我寧願使用Autolayout和Constraints來爲我解決這個問題......例如,您爲第一個圖像視圖設置約束,然後設置基於和基於相關圖層的約束條件到前者。例如:

  • 下的UIImageView:設置前置,頂部和底部限制
  • 疊加:設定的中心X和Y約束爲等於在下部圖像
  • 疊加:設置高度和寬度正比在下側圖像

因此,當過屏幕尺寸的變化,這兩個圖像總是同樣調整...

0

界面生成器:

  1. 設置覆蓋頂部,領先,寬度爲您的圖像視圖。
  2. 給你的覆蓋層一個恆定的高度約束;約束cosntant值是任意的,因爲你會在運行時更換
  3. CTRL +從這個高度約束拖動一個IBOutlet到你的ViewController
  4. 在viewWillLayoutSubViews設置你的身高制約UIScreen.main.bounds的.constant。 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) 
} 

,並根據需要你的框架將設置本身。

相關問題