为什么我的 UILabel 不符合初始框架?
Why my UILabel doesn't conforms to the inital frame?
我正在尝试在图像视图上创建弹出标签。但在我的应用程序中它不起作用。我制作了一个具有相同屏幕的测试应用程序:UIImageView 和在 UIView 下方,视图上有一个 UIButton。
所以,两个问题在哪里。
- 对于这种不同的行为,代码可能有什么不同?
- 为什么我的应用程序中的 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 = 假
删除此行后,问题就消失了。
我正在尝试在图像视图上创建弹出标签。但在我的应用程序中它不起作用。我制作了一个具有相同屏幕的测试应用程序:UIImageView 和在 UIView 下方,视图上有一个 UIButton。
所以,两个问题在哪里。
- 对于这种不同的行为,代码可能有什么不同?
- 为什么我的应用程序中的 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 = 假
删除此行后,问题就消失了。