ios - आईओएस: सत्यापित करें कि कोई बिंदु एक रेक्ट के अंदर है या नहीं




xcode collision-detection (5)

UIView का बिंदु इनसाइड: साथ: एक अच्छा समाधान हो सकता है। एक बूलियन मान वापस गीला संकेत देगा या नहीं दिया गया दिया गया CGPoint UIView उदाहरण में है जिसका आप उपयोग कर रहे हैं। उदाहरण:

UIView *aView = [UIView alloc]initWithFrame:CGRectMake(0,0,100,100);
CGPoint aPoint = CGPointMake(5,5);
BOOL isPointInsideView = [aView pointInside:aPoint withEvent:nil];

क्या यह सत्यापित करने का कोई तरीका है कि एक CGPoint एक विशिष्ट CGRect अंदर है या नहीं। उदाहरण के लिए: मैं UIImageView खींच रहा हूं और मैं यह सत्यापित करना चाहता हूं कि इसका केंद्रीय बिंदु CGPoint किसी अन्य UIImageView अंदर है या नहीं, मैं कैसे कर सकता हूं?


उद्देश्य सी में आप CGRectContainsPoint (yourview.frame, touchpoint) का उपयोग कर सकते हैं

-(void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
UITouch* touch = [touches anyObject];
CGPoint touchpoint = [touch locationInView:self.view];
if( CGRectContainsPoint(yourview.frame, touchpoint) ) {

}else{

}}

स्विफ्ट 3 में yourview.frame.contains (टचपॉइंट)

 override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent?) {
    let touch:UITouch = touches.first!
    let touchpoint:CGPoint = touch.location(in: self.view)
    if wheel.frame.contains(touchpoint)  {

    }else{

    }

}

प्रलेखन में CGRectContainsPoint() देखें।

bool CGRectContainsPoint(CGRect rect, CGPoint point);

पैरामीटर

  • आयत आयताकार आयत।
  • point की जांच करने के लिए बिंदु। वापसी मान सही है अगर आयताकार शून्य या खाली नहीं है और बिंदु आयताकार के भीतर स्थित है; अन्यथा, झूठी।

आयत के अंदर एक बिंदु माना जाता है यदि इसके निर्देशांक आयत के अंदर या न्यूनतम एक्स या न्यूनतम वाई किनारे पर स्थित हैं।


मैं सीखना शुरू कर रहा हूं कि स्विफ्ट के साथ कोड कैसे करें और इसे हल करने की कोशिश भी कर रहा था, यही वह है जो मैं स्विफ्ट के खेल के मैदान पर आया था:

// Code
var x = 1
var y = 2
var lowX = 1
var lowY = 1
var highX = 3
var highY = 3


if (x, y) >= (lowX, lowY) && (x, y) <= (highX, highY ) {
    print("inside")
} else {
    print("not inside")
}

यह अंदर प्रिंट करता है


स्विफ्ट में ऐसा दिखाई देगा:

let point = CGPointMake(20,20)
let someFrame = CGRectMake(10,10,100,100)
let isPointInFrame = CGRectContainsPoint(someFrame, point)

स्विफ्ट 3 संस्करण:

let point = CGPointMake(20,20)
let someFrame = CGRectMake(10,10,100,100)
let isPointInFrame = someFrame.contains(point)

CGRectContainsPoint() । कृपया रोकथाम की जांच करना याद रखें यदि दोनों एक ही समन्वय प्रणाली में हैं तो नहीं तो रूपांतरण आवश्यक हैं ( कुछ उदाहरण )





cgpoint