2010-07-23 12 views
5

मैं एक आईफोन दृश्य पर एक गोलाकार छवि रखने की कोशिश कर रहा हूं और फिर सर्कल के अंदर नल का उपभोग करता हूं लेकिन इसके बाहर नहीं। जिस समस्या में मैं दौड़ रहा हूं वह यह है कि जब मैं इंटरफ़ेस बिल्डर में स्क्रीन दृश्य पर UIImageView डालता हूं, तो मुझे आयताकार आकार में बाध्य होना प्रतीत होता है। मैंने सर्कल के बाहर के क्षेत्र के साथ एक सर्कल की एक छवि का उपयोग करके पारदर्शी के रूप में छोड़ा, लेकिन कुल में छवि अभी भी आयताकार है, इसलिए जब इसे UIImageView पर रखा जाता है और टैप जेस्चर को पहचानने के लिए लगाया जाता है तो यह अभी भी सर्कल के बाहर नलियां उठाता है ।एक गोलाकार छवि के अंदर आईफोन टैप इशारा पहचान को सीमित कैसे करें?

नीचे दी गई छवि से पता चलता है कि मेरा क्या मतलब है। नीले बिंदुएं UIImageView की बाहरी सीमा का प्रतिनिधित्व करती हैं जो छवि रखती है। टैप इशारा पहचान वर्तमान में उस UIImageView से जुड़ी हुई है, लेकिन जैसा कि आप देख सकते हैं, UIImageView के कोनों पर थोड़ी सी जगह है जो परिपत्र छवि द्वारा कवर नहीं हैं। क्या UIImageView को गैर-आयताकार आकार में बदलने के लिए कोई तरीका है या UIImageView का उपयोग किए बिना एक दृश्य को देखने के लिए कोई तरीका है और फिर भी टैप पहचान को अपनाने में सक्षम हो सकता है?

image of walter with transparent background on a UIImageView http://img237.imageshack.us/img237/2164/walterheadshot.png

मैं बहुत iPhone ग्राफिक्स के लिए नए कर रहा हूँ, लेकिन किसी को भी इस पर कुछ विचार है या सही दिशा में मुझे बात कर सकते हैं?

धन्यवाद!

उत्तर

4

एक चक्र मानता है, और न सिर्फ एक अंडाकार:

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event 
{ 
    CGFloat halfSize = [self bounds].size.width * 0.5f; 
    CGPoint location = [[touches anyObject] locationInView:self]; 
    location.x -= halfSize; 
    location.y -= halfSize; 
    CGFloat squaredDistanceFromCenter = location.x * location.x + location.y + location.y; 
    if (squaredDistanceFromCenter < (halfSize * halfSize)) { 
     NSLog(@"Within circle :)"); 
    } else { 
     NSLog(@"Not within circle :("); 
    } 
} 
+0

उत्तर के लिए धन्यवाद, और मुझे लगता है कि काम करेंगे संभालने हूँ। हालांकि, मैं वास्तव में क्या जानना चाहता था (और अब मुझे पता है कि मुझे अपने प्रश्न के साथ और अधिक विशिष्ट होना चाहिए था) अगर अनियमित आकार की छवियों को एक इशारा पहचानकर्ता को हुक करना संभव था। मैंने एक गोलाकार छवि उदाहरण को चुना (गलत तरीके से) कि किसी भी सर्कल के चिकनी किनारों के लिए जो कुछ भी काम करेगा वह पागल आकार के बहुभुज को अनुकूलित किया जा सकता है, लेकिन ऐसा नहीं है। उत्तर के लिए फिर से धन्यवाद और मैं एक और अधिक विशिष्ट प्रश्न पोस्ट करूंगा। – ScottS

+0

यदि आपके पास पहले से ही 'CGPath' है, तो आप 'CGPathContainsPoint' का उपयोग कर सकते हैं। यदि आपके पास पथ के बजाय आंशिक रूप से पारदर्शी है, तो आप इसे बफर में प्रस्तुत करने का प्रयास कर सकते हैं और फिर स्पर्श समन्वय से जुड़े पिक्सेल का परीक्षण कर सकते हैं। – rpetrich

+0

मुझे पता चला कि मैं CGPoint tapLocation = [पहचानकर्ता स्थान INView: self.view] का उपयोग कर CGPoint प्राप्त कर सकता हूं; और यह मुझे एक्स, वाई निर्देशांक देगा जहां उपयोगकर्ता ने छवि पर टैप किया था। लेकिन अभी मुझे नहीं पता कि एक्स, वाई मेरी छवि पर किसी विशेष क्षेत्र के साथ समन्वय कैसे करें। अगर मैं इसे करने का कोई रास्ता नहीं ढूंढता तो मैं इसे एक अलग प्रश्न के रूप में जल्द ही पोस्ट करूंगा। शायद आपका विचार "इसे एक बफर में प्रस्तुत करना और फिर स्पर्श समन्वय से जुड़े पिक्सेल का परीक्षण करना" चाल करेगा, लेकिन क्या आपके पास इसे पूरा करने के बारे में कोई और जानकारी है? – ScottS

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