2016-07-25 75 views
0

我來自XAML世界,我們的圖像拉伸模式爲Fill,UniformToFillUniform。我的目標是在我的iOS應用中實現UniformToFill模式。在iOS中,我碰到了ScaleToFillAspectToFitAspectToFill等等。他們都不符合我的要求。如何設置圖像UniformToFill伸展模式

所需行爲:UIImageView(圖像容器)在佈局中的大小保持不變。根據固定尺寸UIImageView縮放圖像並保持圖像本身的寬高比。匹配任一側(垂直,水平),剪輯圖像的其餘部分。

爲了更好地說明它,下面是屏幕截圖;我期待從左邊獲得第三名。

Image stretch mode

回答

0

XAML到iOS的轉換如下。

Fill = ScaleToFill

Uniform = AspectToFit &

UniformToFill = AspectToFill

這是精確匹配。如果你沒有得到這個結果,那就意味着你在別的事情上犯了錯誤。否則,這是完美的匹配。

+0

對我來說,當使用AspectToFill時,'UIImageView'跨越了佈局約束。你說這是自動佈局問題? – XamlGuy

+0

你應該添加下面一行:'imageview.layer.masksToBounds = true',它不是自動佈局問題,但它是由於ios的行爲,直到你不剪切它的邊界,它會超出其界限。你有另一種方式來做到這一點,你也可以調用這個方法'imageview.clipsToBounds = true',這個方法和上面的方法一樣,現在工作嗎? –

+0

對。我會嘗試一下並回復你。 – XamlGuy

0

這就是.ScaleAspectFill一樣。

你說的是作爲容器的UIImage?我想你應該看看UIImageView。類似的東西會工作(這是寫在Swift但很容易適應Objective-C

let image = UIImage(named: "your_image") 
let imageView = UIImageView(image: image) 
imageView.contentMode = .ScaleAspectFill 
+0

感謝您的糾正。我的意思是'UIImageView'。 – XamlGuy

0

我想你應該設置UIViewContentModeScaleAspectFill爲您的圖像視圖的內容模式。

您可以參考Apple documentation瞭解更多詳情。

它指出約scaleAspectFill

縮放內容到f選項視野的大小。部分內容可能會被剪輯以填充視圖的邊界。

scaleAspectFit

縮放內容通過保持縱橫比以適應視圖的大小選項。視圖邊界的任何剩餘區域都是透明的。

嘗試兩種感覺真正的區別。

+0

會做。但是他們怎麼沒有在屬性檢查器的下拉列表中列出? – XamlGuy

+0

它們在屬性檢查器中被列爲'view'下的'mode'。'方面填充'相當於'scaleAspectFill'和'方面適合'相當於'scaleAspectFit' – Lion

+0

感謝您的答案。罪魁禍首是未被選中的「剪輯子視圖」屬性。 – XamlGuy