Tôi đã lấy một cái nhìn tại câu hỏi này: UIImage Shadow TroubleTạo UIImage mới bằng cách thêm bóng tối để UIImage hiện
Nhưng câu trả lời chấp nhận không làm việc cho tôi.
Điều tôi đang cố gắng thực hiện là thực hiện UIImage và thêm bóng cho nó, sau đó trả về một UIImage hoàn toàn mới, bóng đổ và tất cả.
Đây là những gì tôi đang cố gắng:
- (UIImage*)imageWithShadow {
CGColorSpaceRef colourSpace = CGColorSpaceCreateDeviceRGB();
CGContextRef shadowContext = CGBitmapContextCreate(NULL, self.size.width, self.size.height + 1, CGImageGetBitsPerComponent(self.CGImage), 0,
colourSpace, kCGImageAlphaPremultipliedLast);
CGColorSpaceRelease(colourSpace);
CGContextSetShadow(shadowContext, CGSizeMake(0, -1), 1);
CGContextDrawImage(shadowContext, CGRectMake(0, 0, self.size.width, self.size.height), self.CGImage);
CGImageRef shadowedCGImage = CGBitmapContextCreateImage(shadowContext);
CGContextRelease(shadowContext);
UIImage * shadowedImage = [UIImage imageWithCGImage:shadowedCGImage];
CGImageRelease(shadowedCGImage);
return shadowedImage;
}
Kết quả là tôi nhận được chính xác hình ảnh tương tự như trước khi tôi đặt nó thông qua phương pháp này.
Tôi đang làm điều này một cách chính xác, hoặc có điều gì đó rõ ràng tôi đang thiếu?
Hoàn hảo! Tôi đã thực sự thêm 1 đến chiều cao để vẽ bóng, nhưng những thứ khác (thiết lập bóng, lật hệ tọa độ) đã được phát hiện. –
Mã này sẽ được triển khai ở đâu và bạn sẽ gọi nó như thế nào để thêm bóng vào hình ảnh? –
Phương pháp giả định rằng lớp có thể cung cấp một CGImage và kích thước của nó. Bạn có thể thay đổi phương thức để lấy tham số (CGImage và CGSize) thay thế. –