CIFilter 'apply:' 不可用:在 iOS 上不可用

问题描述 投票:0回答:1

我正在创建一个简单的自定义

CIFilter
,它实现
CIKernel
来降低 alpha 值。

我的“AlphaFilter.h”:

@interface CIAlphaFilter: CIFilter {
    CIImage *inputImage;
}
@property (retain, nonatomic) CIImage *inputImage;
@end

我的“AlphaFilter.m”:

#import "AlphaFilter.h"

@implementation CIAlphaFilter
@synthesize inputImage;
static CIKernel *alphaRemoveKernel = nil;

- (id)init {
    if(alphaRemoveKernel == nil)
    {
        NSString *code = @"kernel vec4 darkToTransparent(sampler image){vec4 color = sample(image, samplerCoord(image));color.a =0.5;return color;}";
        alphaRemoveKernel = [CIKernel kernelWithString:code];
    }
    return [super init];
}

- (CIImage *)outputImage
{
    CISampler *src = [CISampler samplerWithImage: inputImage];
 
    return [self apply: alphaRemoveKernel, src, nil]; // Error here
}

@end

返回

(CIImage *)outputImage
时,Xcode 给我一个错误:

“应用:”不可用:在 iOS 上不可用

谁能告诉我我犯了什么错误?我正在使用 Xcode 15.2。

ios objective-c cifilter
1个回答
0
投票

根据文档:

- (nullable CIImage *)apply:(CIKernel *)k
                  arguments:(nullable NSArray *)args
                    options:(nullable NSDictionary<NSString *,id> *)dict NS_AVAILABLE_MAC(10_4);

- (nullable CIImage *)apply:(CIKernel *)k, ... NS_REQUIRES_NIL_TERMINATION NS_AVAILABLE_MAC(10_4) NS_SWIFT_UNAVAILABLE("");

有两种

apply
方法,但都标有
NS_AVAILABLE_MAC
。所以它在iOS上不可用,你需要寻找其他方法。

© www.soinside.com 2019 - 2024. All rights reserved.