Параллакс UIScrollview поверх UIImageView фоновое изображение - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь разработать домашний экран, на котором есть UIImageView за Scrollview.Я хочу, чтобы представление прокрутки прокручивало содержимое по изображению, и чтобы изображение прокручивалось вверх более медленными темпами (параллакс).

Я нашел массу решений, использующих заголовок таблицы или прокрутки, но это не то, что мне нужно.

Я пытаюсь имитировать аналогичное поведение в мобильном приложении United Airlines, но, похоже, не могу понять, какой код правильный.

У меня настроен вид UIImage за просмотром прокрутки, и я пытаюсь использовать решение здесь , но у меня, похоже, возникают проблемы при конвертации в Swift 4.

Есть идеи?

Начало

Прокрутка

1 Ответ

0 голосов
/ 01 марта 2019

Основываясь на моем ответе на очень похожий вопрос https://stackoverflow.com/a/46727061/1433612

Предполагая, что ваш imageView является подпредставлением в scrollView, используйте метод UIScrollViewDelegate scrollViewDidScroll, чтобы получить смещение содержимого.Вы можете использовать это смещение содержимого для преобразования imageView с желаемым количеством «эффекта».

extension ViewController: UIScrollViewDelegate {
    public func scrollViewDidScroll(_ scrollView: UIScrollView) {
        let offset = scrollView.contentOffset
        if offset.y > 0.0 {
            let parallaxFactor: CGFloat = 0.8
            let prallaxedOffset = offset.y * parallaxFactor
            let transform = CATransform3DTranslate(CATransform3DIdentity, 0, prallaxedOffset, 0)
            imageView.layer.transform = transform
        } else {
            imageView.layer.transform = CATransform3DIdentity
        }
    }
}
...