【问题标题】:method does not override any method from its superclass Xcode 8方法不会覆盖其超类 Xcode 8 中的任何方法
【发布时间】:2017-01-01 04:53:30
【问题描述】:

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

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

当我删除覆盖时,会发生此错误 “带有Objective-C选择器'layerClass'的方法'layerClass()'与具有相同Objective-C选择器的超类'UIView'中'layerClass'的getter冲突”

完整代码在这里:

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新手,请帮帮我

【问题讨论】:

  • override class var layerClass: AnyClass { return CAGradientLayer.self }

标签: ios swift3


【解决方案1】:

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

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

【讨论】:

  • 谢谢您,先生。但弹出另一个错误“无法渲染和更新 ViewController (BYZ-38-t0r) 的自动布局状态:代理崩溃”
  • 你能说出你在课堂上实现的方法吗?
  • 在此处参考@Azure 的答案stackoverflow.com/a/37257488/3840908 并在您的项目中检查。
  • 谢谢您,先生。我退出 xcode 并重新打开项目,代码工作,谢谢。
猜你喜欢
  • 1970-01-01
  • 2016-12-08
  • 1970-01-01
  • 2019-11-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-08-22
相关资源
最近更新 更多