我正在使用 PinLayout 在我的视图上设置背景图像
final class MDetailView: UIView {
let backgroundImageView: UIImageView = {
let imageView = UIImageView(image: #imageLiteral(resourceName: "background"))
imageView.contentMode = .scaleAspectFill
return imageView
}()
override init(frame: CGRect) {
super.init(frame: frame)
setupSubviews()
}
private func setupSubviews() {
addSubview(backgroundImageView)
}
required init?(coder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
override func layoutSubviews() {
super.layoutSubviews()
configureSubviews()
}
private func configureSubviews() {
backgroundImageView.pin
.all()
}
}
后台延迟一秒关闭,然后完全关闭。我需要消除延迟
我删除了
backgroundImageView.pin.all()
并将其更改为 backgroundColor = .gray
- 它有助于消除延迟,但我需要设置背景图像
您需要在
backgroundImageView.pin.all()
拨打setupSubviews
。
每当 MDetailView 的框架更新时都会调用 layoutSubviews
,因此
您看到延迟是因为:
MDetailView
出现在屏幕上 -> 其框架被更新 -> backgroundImageView.pin.all()
被调用 -> MDetailView
的延迟然后backgroundImageView.pin.all
在屏幕上布局