eBay アプリのように UIView にフィルターを追加したい。GPUImage フレームワークを使用します。UIView から継承したクラスを作成し、このビューに UIButton と UIActivityIndicatorView を追加しました。そして、再描画の瞬間を捉えて、新しい画像/テクスチャにフィルターを適用したいと思います。たとえば、ボタンをタップすると、ボタンがハイライトになります。
@interface MyCALayer : CALayer
@end
@implementation MyCALayer
- (void)renderInContext:(CGContextRef)ctx
{
[super renderInContext:ctx];
NSLog(@"%@", @"CALayer redraw");
}
@end
@implementation MyView
+ (Class)layerClass
{
return [MyCALayer class];
}
- (void)drawRect:(CGRect)rect
{
[super drawRect:rect];
NSLog(@"%@", @"UIView redraw");
}
@end
UIView と CALayer は 1 回だけ再描画します。ボタンをクリックしても、NSLog が呼び出されません。更新アクティビティ インジケーター ログも呼び出されません。ビュー内のコンテンツの変化をキャッチするにはどうすればよいですか? このビューをコンテキストで再描画せずに UIView から画面に表示される画像/テクスチャを取得する方法はありますか?