Swift setGradientBackground не работает после изменения постоянной ширины - PullRequest
0 голосов
/ 19 сентября 2019

Я пытаюсь изменить градиентный фон после изменения ширины.

Сначала я настраиваю раскадровку.Затем я применяю ограничение для ширины.

в контроллере, я могу все изменить нормально - ожидать .setGradientBackground.

Применяет только градиент к исходным настройкам ширины раскадровки.

enter image description here

Вот код контроллера представления:

import UIKit

class _textVC: UIViewController {

@IBOutlet weak var test: UIView!
@IBOutlet weak var testWidth: NSLayoutConstraint!

override func viewDidLoad() {
    super.viewDidLoad()

    let c1 = UIColor.green
    let c2 = UIColor.white

    testWidth.constant = UIScreen.main.bounds.size.width  * 0.8
    test.layer.cornerRadius = 10;

    test.setGradientBackground(colorOne: c1, colorTwo: c2)

  }

}

Я получил эту функцию с YouTube Шона Аллена, но я пробовал другие функции с тем же эффектом.

func setGradientBackground(colorOne: UIColor, colorTwo: UIColor) {

    let gradientLayer = CAGradientLayer()
    gradientLayer.frame = bounds
    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)

}

спасибо.

1 Ответ

0 голосов
/ 19 сентября 2019

Я не уверен, что это лучший ответ, но я заставил его работать.

Мне пришлось убрать его из viewDidLoad.

override func viewDidLayoutSubviews() {

    let c1 = Color.lightShade
    let c2 = Color.darkShade

    testWidth.constant = UIScreen.main.bounds.size.width  * 0.8
    test.setGradientBackground(colorOne: c1, colorTwo: c2)

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