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