2011-09-05 6 views
19

में किसी अन्य छवि पर एक छवि ओवरले करें मैं अपने आईओएस ऐप में यूट्यूब से थंबनेल छवियां प्रदर्शित कर रहा हूं। जो क्लिक पर, यूट्यूब पर जाएगा।आईओएस

मुझे उन छवियों पर एक प्ले बटन ओवरले करने का एक तरीका चाहिए। ऐसा करने का सबसे सरल तरीका क्या हो सकता है?

इसके अलावा, छवियों दूर से एक मेज पर लोड किए गए हैं, इसलिए प्रदर्शन एक बड़ा विचार

+0

अगर हम थंबनेल imageView के शीर्ष पर हमारे ओवरले छवि डाल? क्या तुमने कोशिश की? मैं वही बात कर रहा हूं और आपके समाधान के बारे में उत्सुक हूं .. – user739711

उत्तर

61

आप तालिका स्क्रॉल प्रदर्शन के साथ संबंध रहे हैं, तो है, थंबनेल निकालते हैं और इस पर प्ले बटन रंग।

+(UIImage*) drawImage:(UIImage*) fgImage 
       inImage:(UIImage*) bgImage 
       atPoint:(CGPoint) point 
{ 
    UIGraphicsBeginImageContextWithOptions(bgImage.size, FALSE, 0.0); 
    [bgImage drawInRect:CGRectMake(0, 0, bgImage.size.width, bgImage.size.height)]; 
    [fgImage drawInRect:CGRectMake(point.x, point.y, fgImage.size.width, fgImage.size.height)]; 
    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 
+0

धन्यवाद @jano! यह कोशिश करेंगे। मैं वास्तव में आश्चर्यचकित हूं कि एक छवि पर पेंटिंग कुशल होगी –

+2

@Jano यह काम करता है लेकिन पीएनजी में पारदर्शिता खो जाती है .. –

+0

संदर्भ बनाए जाने पर उपयोग किए गए 0.0 पर ध्यान दें। 0.0 का उपयोग आकार को मुख्य स्क्रीन के पैमाने पर निर्भर करता है। –

3

यहां मैंने जो किया है। कैमरा आईएमजी वह छवि है जिसे मैं कैमरे से प्राप्त कर रहा हूं और अन्य तीन छवियां स्थिर छवियां हैं जिन्हें मैंने कैमरे पर प्रदर्शित किया है Img। इस मामले में, आकार परिभाषित करता है, संदर्भ के लिए आकार जिसे हम शुरू करने जा रहे हैं। चित्र DrawInRect विधि द्वारा परिभाषित रेक्ट में खींचे जाते हैं। संदर्भ को समाप्त करना सुनिश्चित करें और आप कर चुके हैं।

UIImage *cameraImg = image; 

UIImage *leftImg = [UIImage imageNamed:@"apple.jpeg"]; 

UIImage *rightImg = [UIImage imageNamed:@"Cloud.png"]; 

UIImage *middleImg = [UIImage imageNamed:@"mario.jpeg"]; 

CGSize size = CGSizeMake(cameraImg.size.width, cameraImg.size.height); 

UIGraphicsBeginImageContext(size); 

[cameraImg drawInRect:CGRectMake(0, 0, self.view.window.frame.size.width, self.view.window.frame.size.height)]; 

[leftImg drawInRect:CGRectMake(x, y, width, height)]; 

[rightImg drawInRect:CGRectMake(x, y, width, height)]; 

[middleImg drawInRect:CGRectMake(x, y, width, height)]; 

UIImage *finalImage = UIGraphicsGetImageFromCurrentImageContext(); 

UIGraphicsEndImageContext(); 

UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0,finalImage.size.width, finalImage.size.height)]; 

imageView.image = finalImage; 

[self.view addSubview:imageView]; 
5

स्विफ्ट 2.2 संस्करण

static func drawImage(image foreGroundImage:UIImage, inImage backgroundImage:UIImage, atPoint point:CGPoint) -> UIImage{ 
    UIGraphicsBeginImageContextWithOptions(backgroundImage.size, false, 0.0) 
    backgroundImage.drawInRect(CGRectMake(0, 0, backgroundImage.size.width, backgroundImage.size.height)) 
    foreGroundImage .drawInRect(CGRectMake(point.x, point.y, foreGroundImage.size.width, foreGroundImage.size.height)) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return newImage 
    } 
2

स्विफ्ट 3.x

func drawImage(image foreGroundImage:UIImage, inImage backgroundImage:UIImage, atPoint point:CGPoint) -> UIImage { 
    UIGraphicsBeginImageContextWithOptions(backgroundImage.size, false, 0.0) 
    backgroundImage.draw(in: CGRect.init(x: 0, y: 0, width: backgroundImage.size.width, height: backgroundImage.size.height)) 
    foreGroundImage.draw(in: CGRect.init(x: point.x, y: point.y, width: foreGroundImage.size.width, height: foreGroundImage.size.height)) 
    let newImage = UIGraphicsGetImageFromCurrentImageContext() 
    UIGraphicsEndImageContext() 
    return newImage! 
}