Цвет градиента фона с помощью UIScrollView - PullRequest
0 голосов
/ 18 мая 2018

Я знаю, что этот вопрос может выглядеть как дубликат, однако большинство ответов не учитывают факт прокрутки в представлении.

Когда я прокручиваю, цвет градиента остается постоянным по всей прокрутке, а не только для фона. Например, высота представления составляет 1500, а текущее представление, на которое я смотрю, составляет (пример) 450, тогда в этих 450 градиент является постоянным по всем остальным 1050, вместо того чтобы при прокрутке он становился все темнее и темнее (до другой цвет). Вот изображение для лучшего понимания

https://ibb.co/euKcLd

https://ibb.co/bHNxLd

https://ibb.co/eZgA6J

И вот код, который я использую:

func setGradientColour() {
        let colorTop =  UIColor(red: 255.0/255.0, green: 149.0/255.0, blue: 0.0/255.0, alpha: 1.0).cgColor
        let colorBottom = UIColor(red: 255.0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0).cgColor
        let gradientLayer = CAGradientLayer()
        gradientLayer.colors = [colorTop, colorBottom]
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.frame = self.view.bounds
        self.view.layer.insertSublayer(gradientLayer, at: 0)
    }

Который вызывается в методе viewDidLoad.

1 Ответ

0 голосов
/ 18 мая 2018

Оказывается, код был неправильным и должен быть изменен на:

func setGradientColour() {
    let colorTop =  UIColor(red: 255.0/255.0, green: 149.0/255.0, blue: 0.0/255.0, alpha: 1.0).cgColor
    let colorBottom = UIColor(red: 255.0/255.0, green: 0/255.0, blue: 0/255.0, alpha: 1.0).cgColor
    let gradientLayer = CAGradientLayer()
    gradientLayer.colors = [colorTop, colorBottom]
    gradientLayer.locations = [0.0, 1.0]
    gradientLayer.frame = scrollViewTest.bounds
    scrollViewTest.layer.insertSublayer(gradientLayer, at: 0)
}

Где scrollViewTest - это выход для scrollView.Ошибка была в том, что я вызывал обычный слой представления вместо прокрутки, что уменьшало длину просмотра.

...