解決 image view clip to bounds 切除陰影的問題

當我們使用 image view 顯示圖片時,為了讓圖片維持比例填滿,常常會設定 Content Mode 為 Aspect Fill,勾選 Clip to Bounds 切除超出 image view 本身長方形大小的區塊。

Dark Matter(人生複本) 是 Apple TV 好看的影集

然而 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)
}
}

--

--

彼得潘的 iOS App Neverland
彼得潘的 Swift iOS App 開發問題解答集

彼得潘的iOS App程式設計入門,文組生的iOS App程式設計入門講師,彼得潘的 Swift 程式設計入門,App程式設計入門作者,http://apppeterpan.strikingly.com