さまざまなブレンド モードで画像を描画するために使用したい 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 を呼び出しています。