Изменить положение метки во время прокрутки - PullRequest
0 голосов
/ 15 января 2019

У меня есть ярлык за пределами прокрутки.Я хочу переместить метку слева направо на экране и наоборот, когда прокрутка прокрутки вверх и вниз. Я написал этот код, и он работает, когда прокрутка прокручивается с нормальной скоростью и когда прокручивается очень быстро, позиция метки х меняется очень медленно.Как я могу сделать это для всех скоростей прокрутки прокрутки?

func scrollViewDidScroll(_ scrollView: UIScrollView!) {

    let offset = scrollView.contentOffset.y
    let imahey = view.convert(placeImgview.frame, from:scrollview).origin.y + placeImgview.frame.width
    print(offset)
    let ratio: CGFloat = (-offset*1.0 / placeImgview.frame.height)
    topBarView.alpha =  -ratio
    if placeName.frame.origin.x < -20 {
        placeName.center = CGPoint(x: placeName.center.x - 3*ratio, y: placeName.center.y + ratio/1.5)
    }
    if (self.lastContentOffset > scrollView.contentOffset.y) {

            placeName.center = CGPoint(x: placeName.center.x + 6*ratio, y: placeName.center.y - 2*ratio)
        if offset == -20 {
            placeName.frame.origin.x = -view.frame.width/2
            placeName.frame.origin.y = 60
        }

    }

    self.lastContentOffset = scrollView.contentOffset.y
}

1 Ответ

0 голосов
/ 15 января 2019

Итак, проблема в том, что чем быстрее вы прокручиваете, тем больше становится «промежуток» между событиями scrollViewDidScroll.

Вам, вероятно, следует подумать о том, чтобы передвигаться по метке с помощью UIView.animate ... это создаст более согласованный опыт, поскольку анимация всегда имеет одинаковую скорость. Таким образом, вы можете применить анимацию, используя CGAffineTransform (translationX:, y:) в зависимости от того, превышает ли ваш contentOffset.y заданный порог, всякий раз, когда этот ярлык должен появляться или исчезать.

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