将 PinLayout .all() 与 UIImageView 一起使用时的 UI 延迟

问题描述 投票:0回答:1

我正在使用 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
- 它有助于消除延迟,但我需要设置背景图像

ios swift uiview uikit delay
1个回答
0
投票

您需要在

backgroundImageView.pin.all()
拨打
setupSubviews

每当 MDetailView 的框架更新时都会调用

layoutSubviews
,因此 您看到延迟是因为:

MDetailView
出现在屏幕上 -> 其框架被更新 ->
backgroundImageView.pin.all()
被调用 ->
MDetailView
的延迟然后
backgroundImageView.pin.all
在屏幕上布局

© www.soinside.com 2019 - 2024. All rights reserved.