解決 image view clip to bounds 切除陰影的問題
Published in
Jul 27, 2024
當我們使用 image view 顯示圖片時,為了讓圖片維持比例填滿,常常會設定 Content Mode 為 Aspect Fill,勾選 Clip to Bounds 切除超出 image view 本身長方形大小的區塊。
然而 Clip to Bounds 是把鋒利的刀刃,它不只切除超出的區塊,還會同時切除陰影。
若想讓圖片切除超出的區塊並保留陰影,我們可以用 view 當容器裝 image view,改在 view 上顯示陰影,如此陰影就不會被 image view 的 clip to bounds 切除了。
以下為實現的步驟。
點選 View Without Inset,加入 view 裝 image view。
改在裝 image view 的 view 上設定陰影。
App 執行後成功顯示包含陰影的圖片。
若改以程式實現完整的寫法如下。
import UIKit
class ViewController: UIViewController {
override func viewDidLoad() {
super.viewDidLoad()
// Do any additional setup after loading the view.
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 235, height: 373))
imageView.image = .darkMatter
view.addSubview(imageView)
imageView.contentMode = .scaleAspectFill
imageView.clipsToBounds = true
let containerView = UIView(frame: CGRect(x: 50, y: 50, width: 235, height: 373))
containerView.addSubview(imageView)
containerView.layer.shadowOpacity = 0.7
view.addSubview(containerView)
}
}