Tôi muốn tô màu một hình ảnh với tham chiếu màu. Kết quả sẽ giống như chế độ hòa trộn Multiply trong Photoshop, trong đó màu trắng sẽ được thay thế bằng màu :
Tôi sẽ thay đổi giá trị màu liên tục.
Tiếp theo: Tôi sẽ đặt mã để thực hiện việc này trong phương thức drawRect: của ImageView, phải không?
Như mọi khi, một đoạn mã sẽ hỗ trợ rất nhiều cho sự hiểu biết của tôi, trái ngược với một liên kết.
Cập nhật: Phân lớp một UIImageView với mã Ramin đề xuất.
Tôi đặt cái này trong viewDidLoad: của bộ điều khiển chế độ xem của tôi:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
Tôi nhìn thấy hình ảnh, nhưng nó không được nhuộm màu. Tôi cũng đã thử tải các hình ảnh khác, đặt hình ảnh trong IB và gọi setNeedsDisplay: trong bộ điều khiển chế độ xem của tôi.
Cập nhật : drawRect: không được gọi.
Cập nhật cuối cùng: Tôi đã tìm thấy một dự án cũ có imageView được thiết lập đúng cách để tôi có thể kiểm tra mã của Ramin và nó hoạt động như một sự quyến rũ!
Cập nhật cuối cùng, cuối cùng:
Đối với những bạn mới học về Đồ họa lõi, đây là điều đơn giản nhất có thể hoạt động.
Trong UIView phân lớp của bạn:
- (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
}