CGPoint
একটি নির্দিষ্ট ভিতরে আছে কিনা তা যাচাই করার কোনও উপায় আছে CGRect
?
একটি উদাহরণ হ'ল : আমি এটিকে টেনে আনছি UIImageView
এবং এর কেন্দ্রীয় পয়েন্টটি CGPoint
অন্যটির ভিতরে রয়েছে কিনা তা আমি যাচাই করতে চাইUIImageView
CGPoint
একটি নির্দিষ্ট ভিতরে আছে কিনা তা যাচাই করার কোনও উপায় আছে CGRect
?
একটি উদাহরণ হ'ল : আমি এটিকে টেনে আনছি UIImageView
এবং এর কেন্দ্রীয় পয়েন্টটি CGPoint
অন্যটির ভিতরে রয়েছে কিনা তা আমি যাচাই করতে চাইUIImageView
উত্তর:
let view = ...
let point = ...
view.bounds.contains(point)
ব্যবহার CGRectContainsPoint()
:
bool CGRectContainsPoint(CGRect rect, CGPoint point);
পরামিতি
rect
আয়তক্ষেত্র পরীক্ষা করার জন্য।point
বিষয়টি পরীক্ষা করার বিষয়। আয়তক্ষেত্রটি নাল বা ফাঁকা না থাকলে এবং বিন্দুটি আয়তক্ষেত্রের মধ্যে অবস্থিত হলে প্রত্যাবর্তন মানটি সত্য; অন্যথায়, মিথ্যা।আয়তক্ষেত্রের অভ্যন্তরে বা ন্যূনতম এক্স বা সর্বনিম্ন Y প্রান্তে অবস্থিত হলে একটি বিন্দু আয়তক্ষেত্রের অভ্যন্তরে বিবেচনা করা হয়।
সুইফটে যা দেখতে এটির মতো হবে:
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)
ডকুমেন্টেশনের লিঙ্ক । উভয় একই স্থানাঙ্ক সিস্টেমে কনটেনটমেন্ট চেক করতে ভুলবেন না তবে রূপান্তরগুলি প্রয়োজন হয় ( কিছু উদাহরণ )
ইউআইভিউয়ের পয়েন্টআইনসাইড: উইথ ইভেন্ট: একটি ভাল সমাধান হতে পারে। আপনি যে ইউআইভিউ দৃষ্টান্তটি ব্যবহার করছেন তাতে প্রদত্ত সিজিপিয়েন্টটি ওয়েথারের সাথে ইঙ্গিত করে এমন একটি বুলিয়ান মান প্রদান করবে। উদাহরণ:
UIView *aView = [UIView alloc]initWithFrame:CGRectMake(0,0,100,100);
CGPoint aPoint = CGPointMake(5,5);
BOOL isPointInsideView = [aView pointInside:aPoint withEvent:nil];
উদ্দেশ্য সিতে আপনি সিজিআরেক্ট কনটেনসপয়েন্ট ব্যবহার করতে পারেন (আপনার ভিউ.ফ্রেম, টাচপয়েন্ট)
-(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 এ আপনার ভিউ.ফ্রেম.কন্টেনস (টাচপয়েন্ট)
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{
}
}
এটি এত সহজ, আপনি এই ধরণের কাজ করতে নিম্নলিখিত পদ্ধতিটি ব্যবহার করতে পারেন: -
-(BOOL)isPoint:(CGPoint)point insideOfRect:(CGRect)rect
{
if ( CGRectContainsPoint(rect,point))
return YES;// inside
else
return NO;// outside
}
আপনার ক্ষেত্রে, আপনি ইমেজভিউ.সেন্টারটিকে বিন্দু হিসাবে এবং অন্য কোনও আইজ্যাগভিউ.ফ্রেমকে পদ্ধতিতে র্যাক্ট হিসাবে পাস করতে পারেন ।
আপনি এই পদ্ধতিটি বেলো ইউআইটিউচ পদ্ধতিতেও ব্যবহার করতে পারেন :
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
}
আমি সুইফটের সাথে কোড কীভাবে শিখতে শুরু করেছি এবং এটিও সমাধান করার চেষ্টা করছি, এটিই আমি সুইফটের খেলার মাঠে নিয়ে এসেছি:
// 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")
}
এটি ভিতরে মুদ্রণ
- (void)touchesBegan:(NSSet<UITouch *> *)touches withEvent:(UIEvent *)event{
UITouch *touch = [[event allTouches] anyObject];
CGPoint touchLocation = [touch locationInView:self.view];
CGRect rect1 = CGRectMake(vwTable.frame.origin.x,
vwTable.frame.origin.y, vwTable.frame.size.width,
vwTable.frame.size.height);
if (CGRectContainsPoint(rect1,touchLocation))
NSLog(@"Inside");
else
NSLog(@"Outside");
}