2017-01-01 47 views
1

当我尝试在自定义视图文件中设置渐变时,XCode 8中出现错误“方法不覆盖任何方法从它的超类”。 该代码是方法不会覆盖任何方法从它的超类Xcode 8

override class func layerClass() -> AnyClass { 
    return CAGradientLayer.self 
} 

当我删除替换,这种错误发生 “方法‘layerClass()’与从超类的UIView'与目标C选择‘layerClass’与吸气剂的冲突关于‘layerClass’同样的Objective-C中选择”

完整的代码是在这里:

import UIKit 

@IBDesignable 

class CustomView: UIView { 

override class func layerClass() -> AnyClass { 
    return CAGradientLayer.self 
} 

var gradientLayer: CAGradientLayer { 
    return layer as! CAGradientLayer 
} 

override func draw(_ rect: CGRect) { 
    // Drawing code 
    layer.masksToBounds = true 
    layer.borderWidth = 10.0 
    layer.borderColor = UIColor(red: 0.0, green: 64/225.0, blue: 128/225.0, alpha: 1.0).cgColor 
    layer.cornerRadius = 20.0 

    let startColor = UIColor(red: 102/225.0, green: 204/225.0, blue: 1.0, alpha: 1.0).cgColor 
    let endColor = UIColor(red: 0.0, green: 128/225.0, blue: 1.0, alpha: 1.0).cgColor 
    gradientLayer.colors = [startColor,endColor] 
} 
} 

我是新来的iOS plz帮助我

+0

'覆盖类VAR layerClass:AnyClass {返回CAGradientLayer.self}' –

回答

2

layerClass现在是一个getter所以你必须重写,吸气:

override public class var layerClass: Swift.AnyClass { 
    get { 
     return CAGradientLayer.self 
    } 
} 
+0

谢谢主席先生。但弹出另一个错误“无法呈现和更新ViewController的自动布局状态(BYZ-38-t0r):代理程序崩溃” –

+0

你能告诉你在你的类中实现的方法吗? – iYoung

+0

请参阅@ Azure的答案在这里回答http://stackoverflow.com/a/372​​57488/3840908并检查您的项目。 – iYoung

相关问题