2

eBay アプリのように UIView にフィルターを追加したい。GPUImage フレームワークを使用します。UIView から継承したクラスを作成し、このビューに UIButton と UIActivityIndi​​catorView を追加しました。そして、再描画の瞬間を捉えて、新しい画像/テクスチャにフィルターを適用したいと思います。たとえば、ボタンをタップすると、ボタンがハイライトになります。

@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 から画面に表示される画像/テクスチャを取得する方法はありますか?

4

1 に答える 1