ฉันต้องการย้อมสีภาพด้วยการอ้างอิงสี ผลลัพธ์ควรมีลักษณะเหมือนโหมดการผสมแบบทวีคูณใน Photoshop โดยที่สีขาวจะถูกแทนที่ด้วยสี :
ฉันจะเปลี่ยนค่าสีไปเรื่อย ๆ
ติดตามผล:ฉันจะใส่โค้ดเพื่อทำสิ่งนี้ในวิธี drawRect: ImageView ของฉันใช่ไหม
เช่นเคยข้อมูลโค้ดจะช่วยในการทำความเข้าใจของฉันได้มากเมื่อเทียบกับลิงก์
อัปเดต:คลาสย่อยของ UIImageView ด้วยรหัสที่Raminแนะนำ
ฉันใส่สิ่งนี้ไว้ใน viewDidLoad: ของตัวควบคุมมุมมองของฉัน:
[self.lena setImage:[UIImage imageNamed:kImageName]];
[self.lena setOverlayColor:[UIColor blueColor]];
[super viewDidLoad];
ฉันเห็นภาพ แต่มันไม่ได้ถูกย้อมสี ฉันยังลองโหลดภาพอื่น ๆ ตั้งค่าภาพใน IB และเรียก setNeedsDisplay: ในตัวควบคุมมุมมองของฉัน
อัปเดต : drawRect: ไม่ถูกเรียก
การอัปเดตครั้งสุดท้าย:ฉันพบโปรเจ็กต์เก่าที่ตั้งค่า 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
}