首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Swift中的CIFilter子类

Swift中的CIFilter子类
EN

Stack Overflow用户
提问于 2014-08-29 16:56:02
回答 1查看 1.5K关注 0票数 5

我试图创建一个CIFilter的子类,如下所示:

代码语言:javascript
复制
class ColorMonochromeFilter: CIFilter {

    required init(red: CGFloat!, green: CGFloat!, blue: CGFloat!) {

        super.init(name: "ColorMonochrome")
        setDefaults()

        let colour = UIColor(red: red, green: green, blue: blue, alpha: 1.0)
        setValue(colour, forKey: kCIInputColorKey)
    }
}

我收到以下错误消息:

  1. 类'ColorMonochromeFilter‘不实现其超类所需的成员
  2. 必须调用超类的指定初始化程序“CIFilter”

指定的初始化项似乎是init(coder aDecoder: NSCoder!),因为CIFilter符合NSCoding协议,而不是在CIFilter上的扩展中声明的init(name: String!)

我可以通过添加以下内容来删除第一个错误:

代码语言:javascript
复制
    required init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)
    }

(虽然这似乎有点多余!)

有没有办法解决第二个问题?

我在这里试图实现的是Swift的等价物:

代码语言:javascript
复制
@implementation ASHColorMonochromeFilter

    + (ASHColorMonochromeFilter *) filterWithRed: (CGFloat) red green:(CGFloat)green blue:(CGFloat)blue
    {
        ASHColorMonochromeFilter * filter = (ASHColorMonochromeFilter *)[ASHColorMonochromeFilter filterWithName: @"CIColorMonochrome"];

        UIColor * color = [UIColor colorWithRed: red green: green blue: blue alpha: 1.0];
        [filter setValue: color forKey: kCIImageColorSpace];

        return filter;
    }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-29 22:09:38

你的目标-C类方法

代码语言:javascript
复制
+ (ASHColorMonochromeFilter *) filterWithRed: (CGFloat) red green:(CGFloat)green blue:(CGFloat)blue

返回CIFilter (一个子类)的实例。在Swift中,也可以使用方便的初始化器来实现同样的功能。

代码语言:javascript
复制
extension CIFilter {
     convenience init(red: CGFloat, green: CGFloat, blue: CGFloat) {
        self.init(name:"CIColorMonochrome")
        setDefaults()
        let colour = UIColor(red: red, green: green, blue: blue, alpha: 1.0)
        setValue(colour, forKey: kCIInputColorKey)
    }
}

它被称为

代码语言:javascript
复制
let filter = CIFilter(red: 0.1, green: 0.2, blue: 0.3)
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25572792

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档