ios - 我想创建一个Cagradientlayer子类/实用程序类

标签 ios swift cagradientlayer

我已经以一种或另一种方式编程了30多年,但是我是Swift和iOS编程的新手,并从事我的第一个应用程序。我已经计算出如何创建Cagradientlayer在屏幕上显示一个梯度,但是我想创建一个带有一些预定梯度的实用程序类/扩展/子类。

我假设我可以通过在初始化时使用属性来创建Cagradientlayer的子类来做到这一点,但是我不确定要执行此操作的正确语法。我想我缺少一些基本的Swift要求?

我尝试过以下方法:

let greenBlueGradient = GreenBlueGradient.greenBlueGradient()

class GreenBlueGradient: CAGradientLayer {

    override init() {
        super.init()
    }

    func greenBlueGradient() -> GreenBlueGradient {
        self.colors = [ UIColor.init( red: 0.05, green: 0.75, blue: 0.91, alpha: 1.0 ).CGColor, UIColor.init( red: 0.56, green: 0.93, blue: 0.56, alpha: 1.0 ).CGColor ]
        return self
    }

    required init?(coder aDecoder: NSCoder) {
        super.init(coder: aDecoder)
    }
}

但是我在 let 行上收到错误“调用中缺少参数 #1 的参数”。我缺少什么?当然有一种更有效的方法可以做到这一点?我有点让我能够创建某种实用程序类/扩展名,这些类别/扩展名将返回一份cagradientlayer,其中已经准备好设置了框架并将其插入我的 View 层次结构。

最佳答案

您应该在其他文件中添加 CAGradientLayer 的扩展名,例如: 在文件“UIExtensionsCAGradientLayer.swift”

extension CAGradientLayer {
    func setupGreenBlurGradient(){
       self.colors = [UIColor.init( red: 0.05, 
                                    green: 0.75, 
                                    blue: 0.91, 
                                    alpha: 1.0).CGColor,
                      UIColor.init( red: 0.56, 
                                    green: 0.93, 
                                    blue: 0.56, 
                                    alpha: 1.0 ).CGColor ]
    }
}

然后在需要绿色模糊渐变的文件中执行以下操作:

let greenGradientBlur = CAGradientLayer(layer : layer)
greenGradientBlur.setupGreenBlueGradient()

关于ios - 我想创建一个Cagradientlayer子类/实用程序类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34144155/

相关文章:

objective-c - 使用 MPMoviePlayerController 在 View 播放视频上添加 CCLayer?

xcode - 在 Xcode 6.2 中调试

Swift 4 SpriteKit SKTexture 缩放问题

swift - AVAudioEngine 下采样问题

ios - CAGradientLayer 不显示

ios - 将 pagecontroll 放在前面

ios - 为每个选项卡创建一个带有 Storyboard的选项卡栏

ios - 我如何在没有存档但有 .dsym 文件的情况下进行符号化?

iOS白色到透明渐变层为灰色

ios - 如何创建带有渐变和高亮的 UIButton?