カラーリファレンスで画像に色を付けたいのですが。結果は、Photoshopの乗算ブレンドモードのようになります。このモードでは、白が色合いに置き換えられます。
色の値を継続的に変更していきます。
フォローアップ:これを行うためのコードをImageViewのdrawRect:メソッドに入れますよね?
いつものように、コードスニペットは、リンクではなく、私の理解に大いに役立ちます。
更新:Raminが提案したコードでUIImageViewをサブクラス化します。
私はこれを私のviewcontrollerのviewDidLoad:に入れました:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
画像は見えますが、色が付いていません。また、他の画像を読み込んで、IBで画像を設定し、View ControllerでsetNeedsDisplay:を呼び出してみました。
更新:drawRect:が呼び出されていません。
最終更新: Raminのコードをテストできるように、imageViewが適切に設定されている古いプロジェクトを見つけました。これは、魅力のように機能します。
最終、最終更新:
Core Graphicsについて学んだばかりの方のために、これがおそらく機能する可能性のある最も単純なことです。
サブクラス化されたUIViewの場合:
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColor(context, CGColorGetComponents([UIColor colorWithRed:0.5 green:0.5 blue:0 alpha:1].CGColor)); // don't make color too saturated
CGContextFillRect(context, rect); // draw base
[[UIImage imageNamed:@"someImage.png"] drawInRect: rect blendMode:kCGBlendModeOverlay alpha:1.0]; // draw image
}