簡體   English   中英

調整ImageView的大小(圖像填充其邊界),同時保持UIImage的寬高比

[英]Resize ImageView (Image filling its bounds) while retaining UIImage aspect ratio

如何調整UIImageView的大小,使其高度(寬度始終等於屏幕的縱向模式寬度)與所顯示的UIImage的長寬比成比例? 為了更好地理解我的意思,例如以BuzzArt應用程序為例。

當圖像較長時(矩形),UIImageView會調整。 在此處輸入圖片說明

當UiImage為SQUARE時,UIImageView也進行調整。.see..它變為SHORTER 在此處輸入圖片說明

很抱歉,如果我不能完美地描述它,但希望上面的屏幕截圖能對您有所幫助。

如何在Swift中做同樣的事情?

提前致謝! :)

首先,我們需要獲取屏幕的寬度:

let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width

接下來,我們獲取圖像並使用該圖像創建圖像視圖。 在這里,我假設您對圖像視圖的y起點有一個y (圖像視圖的左上角的y坐標),並且對圖像視圖的高度(即圖像的最大高度)也有一個height y之前的0表示圖像視圖一直到屏幕的左邊緣:

let image: UIImage = UIImage(named: "yourImageName")!
let imageView = UIImageView(image: image)
imageView.frame = CGRectMake(0,y,screenWidth,height)

接下來,我們需要確保在保持縱橫比不變的情況下適當調整圖像。 我們需要根據縱向或橫向圖像使用不同的contentMode

if image.size.height > image.size.width {
    imageView.contentMode = .ScaleAspectFill  // Portrait
} else {
    imageView.contentMode = .ScaleAspectFit  // Landscape
}

最后一步是添加視圖:

view.addSubview(imageView)

注:雖然這不看是你的應用程序的情況下,我發現一個錯誤,使圖像稍微移動,即如果height你的imageView小於screenWidth

在全:

let screenSize: CGRect = UIScreen.mainScreen().bounds
let screenWidth = screenSize.width

let image: UIImage = UIImage(named: "yourImageName")!
let imageView = UIImageView(image: image)
imageView.frame = CGRectMake(0,y,screenWidth,height)

if image.size.height > image.size.width {
    imageView.contentMode = .ScaleAspectFill  // Portrait
} else {
    imageView.contentMode = .ScaleAspectFit  // Landscape
}

view.addSubview(imageView)

暫無
暫無

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

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