簡體   English   中英

Swift以編程方式將UIImageView放在另一個上面並調整大小

[英]Swift programmatically place UIImageView on top of another and resize

在我的故事板上,我有2個圖像視圖。 一個保存主圖像,第二個是覆蓋圖,用於指定主圖像的裁剪區域。

在我的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之后以編程方式將其排列在imageView之上,還可以在viewDidload中動態調整overlayImage的大小? 我只是在storyboard編輯器中手動完成,但每個人都有不同的屏幕尺寸,所以我認為最好使用mainscreen()。bounds.height變量來確定在運行時動態使用的高度。

您所要做的就是在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)
}

你的框架將根據需要設置自己。

由於您正在使用Storyboard,我寧願使用Autolayout和Constraints為我解決這個問題...例如,您為第一個圖像視圖設置了約束,然后設置基於疊加的約束並與前一個相關。 例:

  • 降低UIImageView:設置前導,尾隨,頂部和底部約束
  • 疊加:將中心X和Y約束設置為等於下部圖像
  • 疊加:設置高度和寬度與下圖像成比例

因此,當屏幕尺寸發生變化時,兩個圖像將始終同等地調整大小......

界面構建器:

  1. 將疊加頂部,前導,寬度設置為圖像視圖。
  2. 給你的疊加層一個恆定的高度約束; 約束cosntant值是任意的,因為您將在運行時替換它
  3. ctrl +將IBOutlet從此高度約束拖動到viewcontroller
  4. 在viewWillLayoutSubViews中將高度約束的.constant設置為UIScreen.main.bounds.size.height / 5

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM