Переместить UILabel на основе позиции прокрутки - PullRequest
0 голосов
/ 27 февраля 2020

У меня есть titleLabel внутри моего headerView (представление изображения), который меняет свой размер в зависимости от прокрутки прокрутки. Я пытаюсь переместить метку заголовка также на основе положения представления прокрутки, поскольку его размер примерно равен размеру панели навигации. Я пытаюсь переместить метку в положение, которое отражает заголовок навигации. Вот как я сейчас пытаюсь это сделать.

    self.view.addSubview(self.imageView)
    self.imageView.translatesAutoresizingMaskIntoConstraints = false
    self.imageView.leadingAnchor.constraint(equalTo: self.view.leadingAnchor).isActive = true
    self.imageView.trailingAnchor.constraint(equalTo: self.view.trailingAnchor).isActive = true
    self.imageView.topAnchor.constraint(equalTo: self.view.topAnchor).isActive = true

    self.imageHeightConstraint = self.imageView.heightAnchor.constraint(equalToConstant: 400)
    self.imageHeightConstraint.isActive = true

    self.scrollView.delegate = self
    self.view.addSubview(self.scrollView)
    scrollView.anchor(top: imageView.bottomAnchor, left: view.leftAnchor, bottom: view.bottomAnchor, right: view.rightAnchor, paddingTop: -10, paddingLeft: 0, paddingBottom: 0, paddingRight: 0, width: 0, height: 0)

    self.scrollView.contentOffset = CGPoint(x: 0, y: -100)

ScrollViewDidScroll

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let y = 100 - (scrollView.contentOffset.y - 100)
    let height = max(y, 100)
    self.imageHeightConstraint.constant = height

    self.eventTitleLabel.center.y = scrollView.contentOffset.y 
}

1 Ответ

3 голосов
/ 27 февраля 2020

вам нужно изменить не только значение Y, вам нужно изменить весь кадр следующим образом

func scrollViewDidScroll(_ scrollView: UIScrollView) {
    let y = 100 - (scrollView.contentOffset.y - 100)
    let height = max(y, 100)
    self.imageHeightConstraint.constant = height

    //self.eventTitleLabel.center.y = scrollView.contentOffset.y 
    self.eventTitleLabel.frame = CGRect(x: 0, y: scrollView.contentOffset.y , width: label.frame.width, height: label.frame.height)

}

здесь, X и Y управляют с вашим прокруткой, как вы хотите.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...