Фоновый градиент цвета не покрывает весь вид Xcode - PullRequest
1 голос
/ 07 января 2020

После применения градиента к виду результат будет таким, как показано на рисунке. Цвет градиента (желтая часть) не распространяется на границы обзора. И желтый, и красный - это один и тот же вид. Не могу понять, что происходит. А вот мой код:

let gradientLayer = CAGradientLayer()
        gradientLayer.frame = bounds
        //gradientLayer.frame = frame
        //gradientLayer.bounds = frame
        gradientLayer.colors = [colorOne.cgColor, colorTwo.cgColor]
        gradientLayer.locations = [0.0, 1.0]
        gradientLayer.startPoint = CGPoint(x: 1.0, y: 1.0)
        gradientLayer.endPoint = CGPoint(x: 0.0, y: 0.0)

        layer.insertSublayer(gradientLayer, at: 0

colorOne и colorTwo определены в другом месте.

enter image description here)

Кто-нибудь сталкивался с такой же проблемой?

background gradient

Ответы [ 2 ]

0 голосов
/ 07 января 2020

Я говорил слишком рано ... теперь он не обновляется до границ при изменении ориентации (одновременно показывает горизонтальный и вертикальный градиент) Есть мысли?

enter image description here

0 голосов
/ 07 января 2020

Это связано с тем, что ограничения в вашем storyboard не применяются до тех пор, пока не будет выложено subviews. При viewDidLoad () представление имеет фиксированный размер от storyboard. Если вы переместите код, который устанавливает фрейм слоя на viewDidLayoutSubviews(), ограничения будут применены к вашему представлению, и тогда у него будет правильный фрейм. Затем вы можете установить рамку слоя.

override func viewDidLayoutSubviews() {
    super.viewDidLayoutSubviews()

    gradientLayer.frame = yourView.bounds
}

Тогда он заполнит весь вид.

...