2012-05-09 16 views
9

Mam 2 obrazy: pierwszy to osobisty obraz użytkownika, drugi to ikona (znaczek).Dodaj UIImage na wierzchu innej UIImage

Chcę dodać drugi uiimage (ikonę) w lewym dolnym rogu pierwszego zdjęcia użytkownika (uiimage) i zapisać je w nowym interfejsie użytkownika.

dzięki

Odpowiedz

27

Spróbuj tej metody:

-(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; 
} 

można go używać przez:

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

jakiś pomysł dlaczego kod zajmie pewien UIImages i po prostu je przybliżaj - w gruncie rzeczy tracąc akt rozmiar? Ten kod nie działa dla nas, ponieważ nasze obrazy są powiększane - nawet jeśli tylko przekazujemy obraz profilu bez plakietki. – Praxiteles

+0

zapisał mój dzień. Szkoda, że ​​nie musiałem powracać do tego, że UIImageViews są ułożone jeden na drugim zamiast używać tego pomocnika –

2

Spróbuj tego:

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();