2012-05-09 9 views
9

tôi có 2 hình ảnh: hình ảnh đầu tiên là hình ảnh cá nhân của người dùng, hình ảnh thứ hai là biểu tượng (huy hiệu).Thêm UIImage lên trên một UIImage khác

tôi muốn thêm biểu tượng thứ hai (biểu tượng) ở góc dưới cùng bên trái của hình ảnh đầu tiên (hình ảnh của người dùng) và lưu chúng vào một hình ảnh mới.

nhờ

Trả lời

27

Hãy thử phương pháp này:

-(UIImage *)drawImage:(UIImage*)profileImage withBadge:(UIImage *)badge 
{ 
    UIGraphicsBeginImageContextWithOptions(profileImage.size, NO, 0.0f); 
    [profileImage drawInRect:CGRectMake(0, 0, profileImage.size.width, profileImage.size.height)]; 
    [badge drawInRect:CGRectMake(0, profileImage.size.height - badge.size.height, badge.size.width, badge.size.height)]; 
    UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 
    return resultImage; 
} 

Bạn có thể sử dụng nó bằng cách:

UIImage *myBadgedImage = [self drawImage:profileImage withBadge:badgeImage]; 
+0

ý tưởng Bất kỳ lý do tại sao mã sẽ mất một số UIImages và chỉ phóng to chúng - về cơ bản là mất hành động ual kích thước? Mã này không hoạt động đối với chúng tôi vì hình ảnh của chúng tôi đang được phóng to - ngay cả khi chúng tôi chỉ chuyển hình ảnh hồ sơ mà không có huy hiệu. – Praxiteles

+0

đã lưu ngày của tôi. Tôi ước gì mình không cần phải quay trở lại cái này có UIImageViews xếp chồng lên nhau thay vì dùng helper này –

2

Hãy thử điều này:

CGFloat scale = [self currentScale]; 
if (scale > 1.5) 
    UIGraphicsBeginImageContextWithOptions(view.frame.size, NO, scale); 
else 
    UIGraphicsBeginImageContext(view.frame.size); 

[image1 drawInRect:CGRectMake(0, 0, w1, h1)]; 
[image2 drawInRect:CGRectMake(0, 0, w2, h2)]; 

UIImage* screenshot = UIGraphicsGetImageFromCurrentImageContext(); 
UIGraphicsEndImageContext();