Я пытаюсь создать всплывающую метку над изображением. Но в моем приложении это не работает. Я сделал тестовое приложение с тем же экраном: 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)
Это мое приложение и каким НЕ ДОЛЖНО быть