iOS/iPhone/iPad/watchOS/tvOS/MacOSX/Android プログラミング, Objective-C, Cocoa, Swiftなど
『Core Animation for Max OS X and the iPhone』の『6.4 Compositing Filters』について説明する。
サンプルコードのFilteredViewは、アウトレットのスペルが間違っている。なので、スペル間違いを我慢して、FilteredView.mのメソッド名を変更するか、FilteredView.hのアウトレットをただしいスペルに変更し、MainMenu.nibのアウトレットの繋がりを張り直す必要がある。ちなみに、著者は後者を選択した。
合成フィルタ (Compositing Filters)は、異なる画像を合成するフィルターで、書籍ではブレンドモードフィルタ (Blend Mode Filters)と呼ばれる、重ねた画像を描画するフィルタのサンプルを説明している。
フィルタの定義は以下のとおり。
- (void) applyFilter
{
CIFilter *filter = [CIFilter filterWithName:@"CIColorBurnBlendMode"
keysAndValues:nil];
[[controls animator] setCompositingFilter:filter];
}
灰色で描画しているビューで、
- (void)drawRect:(NSRect)rect
{
[[NSColor lightGrayColor] set];
NSRectFill(rect);
}
子ビューに対してフィルタを適用すると
- (IBAction)addFilter:(id)sender
{
if (nil == [controls compositingFilter]) {
[self applyFilter];
}
}
子ビューが灰色になるということのようだ。