2011-02-08 11 views
5

मेरे पास दो UIImageViews हैं, उनमें से एक बाएं से दाएं ओर जा रहा है, दूसरा स्पर्श ड्रैग करने योग्य है। मैं चाहता हूं कि NSLog कंसोल पर एक संदेश दिखाए, जब भी इमेजेटो छवि को ओवरलैप करता है। मैं यह कैसे करु?जब भी दो UIImageView ओवरलैप करते हैं तो मैं कैसे पता लगा सकता हूं?

उत्तर

11

आप आसानी से आयताकार चौराहे का परीक्षण करने के लिए CGRectIntersectsRect फ़ंक्शन का उपयोग कर सकते हैं, बशर्ते UIImageViews समान पर्यवेक्षण साझा करें (अधिक सटीक, समान समन्वय स्थान हो)। UIView कि दोनों छवि विचार, या किसी ऐसे ही विधि है कि जब भी खींचें पूरा हो गया है कहा जाता है को होस्ट करने के लिए

-(void) touchesEnded:(NSSet *) touches { 
    if(CGRectIntersectsRect([imageViewA frame], [imageViewB frame])) { 
     NSLog(@"Do something."); 
    } 
    } 

:

संभावना आप निम्नलिखित की तरह कोड जोड़ने की आवश्यकता होगी।

+0

यह चाल किया था, आपको बहुत बहुत धन्यवाद! – John

+0

यदि वे समान समन्वय स्थान साझा नहीं करते हैं: 'BOOL intersects = CGRectIntersectRect (viewA.bounds, [viewA convertRect: viewB.bounds fromView: viewB]) ' – nielsbot

0

आप उपयोग कर सकते हैं:

CGRectIsNull (CGRectIntersection (view1.bounds, view2.bounds));

1

इस तरह कुछ कोशिश करें।

if (CGRectContainsRect([myImageView1 frame], [myImageView2 frame])) { 
     NSLog(@"Overlaped, it's working!"); 
} 
0

स्विफ्ट 3.0 में हो गया है ...

if (self.image2P.bounds.contains(self.image3P.bounds)) { 
    print("Overlaped, it's working!") 
} 
संबंधित मुद्दे

 संबंधित मुद्दे