Appleのサイトでこのフィルターを見つけて、私がやろうとしていることには完璧だと思いましたが、それに関する情報はほとんどなく、この質問は私が見つけることができる唯一の参照です。
それで、長い間それをいじった後、私はそれを機能させました。
基本的に、あなたは正しい道を進んでいましたが、設定する値がさらにあり、最終結果を保持するのに十分なUIImage
特定のものを作成する必要があります。CGRect
size
以下は、10x10 ピクセルの星 (基本的には半径)を使用して、おそらくあなたがやろうとしていたことを達成するでしょう。
CGFloat size = 5;
CIFilter *filter = [CIFilter filterWithName:@"CIStarShineGenerator"];
CIColor *blue = [[CIColor alloc] initWithColor:[UIColor colorBlue]];
[filter setDefaults];
[filter setValue:[NSNumber numberWithFloat:size/2] forKey:@"inputRadius"];
[filter setValue:[NSNumber numberWithFloat:1] forKey:@"inputCrossWidth"];
[filter setValue:[NSNumber numberWithFloat:2] forKey:@"inputCrossScale"];
[filter setValue:blue forKey:@"inputColor"];
[filter setValue:[CIVector vectorWithX:size Y:size] forKey:@"inputCenter"];
CIImage *outputImage = [filter valueForKey:@"outputImage"];
CIContext *context = [CIContext contextWithOptions:nil];
CGFloat UIImageOriginX = 0;
CGFloat UIImageOriginY = 0;
CGFloat UIImageSizeWidth = size * 2;
CGFloat UIImageSizeHeight = size * 2;
UIImage *image = [UIImage imageWithCGImage:[context createCGImage:outputImage fromRect:CGRectMake(UIImageOriginX, UIImageOriginY, UIImageSizeWidth, UIImageSizeHeight)]];
_imageView.image = image;
上記のいくつかはやり過ぎです (サイズをインラインで定義できますCGRect
) が、私はさまざまな変数を明確な方法でいじろうとしていました。