2013-06-12 58 views
2

我想添加过滤器到UIView就像在eBay应用程序。我使用GPUImage框架。我创建了一个类,继承自UIView并将UIButton和UIActivityIndi​​catorView添加到此视图。我想捕捉重绘时刻并为新图像/纹理应用滤镜。例如。当我点击按钮时,按钮变成了高亮。抓住UIView内容重绘

@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只重绘一次。当我点击按钮时,NSLog不会调用。在更新活动指标日志不会调用。我怎样才能捕捉到更改内容?有没有什么办法可以从UIView在屏幕上显示图像/纹理,而无需在上下文中重新绘制该视图?

回答

0

您可以要求UIView重绘(调用- (void)drawRect:(CGRect)rect)是这样的:

[view setNeedsDisplay]; 

文件说:

您可以使用此方法或setNeedsDisplayInRect:通知 系统,您的视图的内容需要重新绘制。

或者你可以使用

view.contentMode = UIViewContentModeRedraw; 

重新显示视图时通过调用setNeedsDisplay方法的范围变化。

+0

我需要捕捉更改图像/纹理,产生UIView。当我点击按钮,按钮改变自己的图像/纹理呈现。我想抓住这一刻。对不起,我的英语,如果我解释得不好。 – Sk0prion