UIView子类中的drawRect不更新图像

时间:2012-04-28 01:39:05

标签: objective-c ios uiimage drawrect

我有一个UIView子类,我想用它来绘制具有不同混合模式的图像。

代码:

@implementation CompositeImageView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        // Initialization code
    }
    return self;
}

-(void)setBlendMode:(CGBlendMode) composite
{
    blender = composite;
}

-(void)setImage:(UIImage*) img
{
    image = img;
}

- (void)drawRect:(CGRect)rect
{
    NSLog(@"it draws");
    CGContextRef c = UIGraphicsGetCurrentContext();
    CGContextSetBlendMode(c, blender);
    CGContextDrawImage(c, rect, image.CGImage);
}

@end

我用来设置它的代码是:

[testImage setImage:[UIImage imageNamed:@"Prayer_Background_Paid"]];
[testImage setBlendMode:kCGBlendModeColor];
[testImage setNeedsDisplay];

我使用界面构建器放置一个大的矩形UIView,然后将其类设置为CompositeImageView。但是,它仍然是一个大的白色方块。即使我在drawRect中注释掉所有内容,它仍然会绘制白色方块。但是,它正在调用drawRect,因为正在记录“它正在绘制”。

1 个答案:

答案 0 :(得分:0)

你确定kCGBlendModeColor是你想要的吗?来自Apple doc:

  

使用色调和背景的背景亮度值   源图像的饱和度值。

似乎如果是白色背景,混合图像也会显示为白色。