Я также хотел сделать это и обнаружил, что из-за autolayout , UIImageView
растягивает содержащий UIView
, когда я хочу это другим способом: я хочу, чтобы UIImageView
взять размер UIView
.
Итак, я создал этот класс. Он обновляет фрейм UIImageView
в соответствии с контейнером UIView
всякий раз, когда он размещается с помощью layoutSubviews
.
/**
* View with an image whose frame is adjusted to the frame of the view.
*/
class ViewWithImage: UIView {
let image: UIImageView
init(image: UIImageView) {
self.image = image
super.init(frame: .zero)
self.addSubview(image)
}
override func layoutSubviews() {
super.layoutSubviews()
updateImageFrame()
}
private func updateImageFrame() {
image.frame = CGRect(origin: .zero, size: self.frame.size)
}
required init?(coder: NSCoder) { fatalError("no init(coder:)") }
}