2012-10-19 42 views
2

我在嘗試瞭解如何在CALayer上使用過濾器數組屬性應用CIFilter。根據文檔,這應該可以從iOS5獲得。如何將CIFilter應用於CALayer

這是我的代碼到目前爲止。

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    CIFilter *gradientFilter = [CIFilter filterWithName:@"CILinearGradient"]; 
    [gradientFilter setValue:[CIColor colorWithRed:0 green:0 blue:0] forKey:@"inputColor0"]; 
    [gradientFilter setValue:[CIVector vectorWithX:0 Y:0] forKey:@"inputPoint0"]; 
    [gradientFilter setValue:[CIColor colorWithRed:1 green:1 blue:1] forKey:@"inputColor1"]; 
    [gradientFilter setValue:[CIVector vectorWithX:0 Y:200] forKey:@"inputPoint1"]; 

    self.view.layer.filters = @[gradientFilter]; 
    [self.view setNeedsDisplay]; 
} 

self.view只是一個空的UIView backgroundColor設置爲綠色。

我知道我可以通過其他方式創建漸變,但是如果這樣工作,我將應用更多的濾鏡,因此這僅用於測試系統。

我發現

所有的例子是應用在UIImage的過濾器和我不能讓那些爲我工作...

+0

Mr.Johan,親切嘗試一下self.view.layer.filters = [NSArray arrayWithObject:gradientFilter]; – Bala

+1

感謝您的評論Bala,但[NSArray arrayWithObject:gradientFilter]與@ [gradientFilter]相同。新的Objective-C語法 – Johan

+0

對不起,我不知道! :)並感謝那個新的Objective-C語法。 – Bala

回答

0

您需要將層渲染成圖像,然後將圖像作爲將inputImage添加到過濾器中,然後在圖層中繪製outputImage