iOS - UIImage & UIContentMode

當圖片超過螢幕大小時, 我們可選用幾種方式來縮放圖片.

UIViewContentMode.ScaleAspectFill : 按照原比例呈現
此模式下可搭配 UIImageView.clipsToBounds = true 來裁切圖片

UIViewContentMode.ScaleAspectFit : 按照等比例縮放
UIViewContentMode.ScaleToFill : 按照UIImageView的大小縮放圖片

目前有張圖片為1920x1080, 而螢幕大小為1024x768

若沒有指定UIImageView大小時, 則呈現圖片如下, 且UIImageView所使用的大小為1920x1080

1
2
3
4
5
6
7
8
9
10
let image = UIImage(named: "mi.jpg")
var imageView: UIImageView!

override func viewDidLoad() {
super.viewDidLoad()
imageView = UIImageView(image: image);
imageView.center = view.center
print("W: \(imageView.frame.width), H: \(imageView.frame.height)")
view.addSubview(imageView);
}

執行結果

若指定UIImageView的大小, 並使用 UIViewContentMode.ScaleAspectFill, ScaleAspectFit, ScaleToFill時UIImageView的大小皆為1024x768

UIViewContentMode.ScaleAspectFill : 按照原比例呈現

UIViewContentMode.ScaleAspectFit : 按照等比例縮放

UIViewContentMode.ScaleToFill : 按照UIImageView的大小縮放圖片

作者

Nick Lin

發表於

2016-10-27

更新於

2023-01-18

許可協議


評論