为什么我的 UILabel 不符合初始框架?

Why my UILabel doesn't conforms to the inital frame?

我正在尝试在图像视图上创建弹出标签。但在我的应用程序中它不起作用。我制作了一个具有相同屏幕的测试应用程序:UIImageView 和在 UIView 下方,视图上有一个 UIButton。

所以,两个问题在哪里。

  1. 对于这种不同的行为,代码可能有什么不同?
  2. 为什么我的应用程序中的 UILabel 不符合初始框架?

我的viewController里面函数的代码是一样的:

private func showBanner(startY: CGFloat, targetView: UIView) {
    let height: CGFloat = 42
    let finishY = startY - height
    
    let bannerLabel = UILabel(frame: CGRect(x: 0, y: startY, width: self.view.frame.width, height: height))
    bannerLabel.translatesAutoresizingMaskIntoConstraints = false
    bannerLabel.font = UIFont.systemFont(ofSize: 13, weight: .regular)
    bannerLabel.textColor = .lightGray
    bannerLabel.backgroundColor = .black
    bannerLabel.textAlignment = .center
    bannerLabel.numberOfLines = 1
    bannerLabel.text = "You've added the item to the favorites"
    
    targetView.addSubview(bannerLabel)
    
    UIView.animate(withDuration: 0.5, animations: {
        bannerLabel.frame = CGRect(x: 0,
                                   y: finishY,
                                   width: self.view.frame.width,
                                   height: height
                                    )
    }) {
        _ in

        UIView.animate(withDuration: 0.5, delay: 1.0, options: .curveLinear, animations: {
            bannerLabel.frame = CGRect(x: 0,
                                       y: startY,
                                       width: self.view.frame.width,
                                       height: height
                                        )
        }, completion: {
            _ in
            bannerLabel.removeFromSuperview()
        })
    }
}

正在调用该函数:

showBanner(startY: itemsImageView.frame.maxY, targetView: itemsImageView)

问题出在: bannerLabel.translatesAutoresizingMaskIntoConstraints = 假

删除此行后,问题就消失了。