Mode 屬性如何影響影象
檢視的內容模式屬性說明了其內容的佈局方式。在 Interface Builder 中,可以在 Attributes Inspector 中選擇各種模式。

讓我們使用兩個影象檢視來檢視各種模式的工作原理。

縮放到填充

影象高度和寬度被拉伸以匹配 UIImageView 的大小。
Aspect Fit

拉伸影象的最長邊(高度或寬度)以匹配檢視。這使得影象儘可能大,同時仍然顯示整個影象而不會扭曲高度或寬度。 (我將 UIImageView 背景設定為藍色,以便它的大小清晰。)
Aspect 填充

拉伸影象的最短邊(高度或寬度)以匹配檢視。與 Aspect Fit 類似,影象的比例不會與其原始寬高比失真。
重繪

重繪僅適用於需要進行自定義縮放和調整大小的自定義檢視。我們沒有使用自定義檢視,因此我們不應該使用 Redraw。請注意,這裡 UIImageView 只給出了與 Scale to Fill 相同的結果,但它在幕後做了更多的工作。
關於 Redraw, Apple 文件說:
內容模式適用於回收檢視內容,但是當你特別希望自定義檢視在縮放和調整大小操作期間重繪時,你也可以將內容模式設定為
UIViewContentModeRedraw值。將檢視的內容模式設定為此值會強制系統呼叫檢視的drawRect:方法以響應幾何體更改。通常,應儘可能避免使用此值,並且當然不應將其與標準系統檢視一起使用。
中央

影象在檢視中居中,但影象的長度和寬度未拉伸。
最佳

影象的上邊緣在檢視頂部水平居中,影象的長度和寬度未拉伸。
底部

影象的下邊緣水平居中於檢視的底部,影象的長度和寬度未拉伸。
剩下

影象的左邊緣垂直居中於檢視的左側,影象的長度和寬度未被拉伸。
對

影象的右邊緣垂直居中於檢視的右側,影象的長度和寬度不會拉伸。
左上方

影象的左上角位於檢視的左上角。影象的長度和寬度未拉伸。
右上

影象的右上角位於檢視的右上角。影象的長度和寬度未拉伸。
左下方

影象的左下角位於檢視的左下角。影象的長度和寬度未拉伸。
右下角

影象的右下角位於檢視的右下角。影象的長度和寬度未拉伸。
筆記
-
這個例子來自這裡 。
-
如果內容(在我們的例子中是影象)與檢視大小相同(在我們的例子中是
UIImageView),那麼更改內容模式將沒有明顯的區別。 -
在 Swift 中,要設定為以程式設計方式設定內容模式,請執行以下操作:
imageView.contentMode = UIViewContentMode.scaleToFill imageView.contentMode = UIViewContentMode.scaleAspectFit imageView.contentMode = UIViewContentMode.scaleAspectFill imageView.contentMode = UIViewContentMode.redraw imageView.contentMode = UIViewContentMode.center imageView.contentMode = UIViewContentMode.top imageView.contentMode = UIViewContentMode.bottom imageView.contentMode = UIViewContentMode.left imageView.contentMode = UIViewContentMode.right imageView.contentMode = UIViewContentMode.topLeft imageView.contentMode = UIViewContentMode.topRight imageView.contentMode = UIViewContentMode.bottomLeft imageView.contentMode = UIViewContentMode.bottomRight