Мои UIElements не отображаются после того, как я установил градиент на UIView - PullRequest
0 голосов
/ 17 февраля 2020

Я установил свой вид, чтобы иметь градиентный фон с этим кодом

let gradientLayer = CAGradientLayer()
        gradientLayer.frame = view.bounds
        gradientLayer.colors = [#colorLiteral(red: 0, green: 0.2836692631, blue: 0.456893146, alpha: 1).cgColor, UIColor(red: 0/255, green: 237/255, blue: 255/255, alpha: 1).cgColor]
        view.layer.addSublayer(gradientLayer)

Но когда я это сделаю, все мои другие элементы, такие как UIButton и UILabels, не появятся. как я могу решить это?

Ответы [ 2 ]

0 голосов
/ 25 февраля 2020

@KHY.

Вам нужно всего лишь изменить одну вещь в вашем коде։

let gradientLayer = CAGradientLayer()

gradientLayer.frame = viewMy.boundsgradientLayer.colors = [#colorLiteral(red: 0, green: 0.2836692631, blue: 0.456893146, alpha: 1).cgColor, UIColor(red: 0/255, green: 237/255, blue: 255/255, alpha: 1).cgColor]

//use below code instead of `"view.layer.addSublayer(gradientLayer)"`

viewMy.layer.insertSublayer(gradientLayer, at: 0)
0 голосов
/ 17 февраля 2020

Вам нужно вставить его как подслой.

Проверить расширение моего UIView.

extension UIView {
  func setGradientBackgroundColor(colorOne: UIColor, colorTow: UIColor) {
    let gradientLayer = CAGradientLayer()
    gradientLayer.frame = bounds
    gradientLayer.colors = [colorOne.cgColor, colorTow.cgColor]
    gradientLayer.locations = [0.0, 1.0]
    gradientLayer.endPoint = CGPoint(x: 1.0, y: 1.0)
    gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
    layer.insertSublayer(gradientLayer, at: 0)
  }
}

Вы можете использовать его следующим образом:

myview.setGradientBackgroundColor(colorOne: firstColor, colorTow: secondColor])
...