ios 使用多色更改UIView的背景色

p8ekf7hl  于 2023-02-06  发布在  iOS
关注(0)|答案(3)|浏览(291)

我想让我的UIView背景颜色如下图所示

当我按下按钮,视图的背景色将变成像上面。我是谷歌搜索到很多,但没有找到一个方法。你能帮我吗?

rvpgvaaj

rvpgvaaj1#

可以使用CALayer执行此操作。
1.创建一个CAGradientLayer。
2.设置层的颜色属性为彩虹颜色。
3.根据您的要求设置startPoint和层的endPoint。
4.创建一个CAShapeLayer(用于形状)并将其设置为渐变层的蒙版。
好好享受吧!!

de90aj5v

de90aj5v3#

步骤1:创建ENUM(用于水平和垂直选择)
第二步:创建一个UIView的扩展,并将其应用到任意uiView中。
示例:

enum GradientColorDirection
{
    case vertical
    case horizontal
}
extension UIView {

func createGradient(opacity: Float = 1, direction: GradientColorDirection = .vertical)
    {
        let colors: [UIColor] = [UIColor.red,
                                   UIColor.yellow,
                                   UIColor.green,
                                   UIColor.systemBlue,
                                   UIColor.blue,
                                   UIColor.systemPink,
                                   UIColor.red]
                  
          let gradientLayer = CAGradientLayer()
          gradientLayer.opacity = opacity
          gradientLayer.colors = colors.map { $0.cgColor }

          if case .horizontal = direction {
              gradientLayer.startPoint = CGPoint(x: 0.0, y: 0.0)
              gradientLayer.endPoint = CGPoint(x: 1.0, y: 0.0)
          }

          gradientLayer.bounds = self.bounds
          gradientLayer.anchorPoint = CGPoint.zero
          self.layer.addSublayer(gradientLayer)
      }
}

用法:

let gradientView: UIView
gradientView.createGradient()

相关问题