Вы можете использовать CGRectContainsRect(rect1, rect2)
, чтобы проверить, находится ли первый прямоугольник полностью внутри второго
bool CGRectContainsRect (
CGRect rect1,
CGRect rect2
);
Когда вы используете UIViews и хотите увидеть, попадает ли одно представление полностью в кадр за секунду, связанная функция CGRectContainsRect выполнит проверку за вас. Это не проверяет пересечение; объединение обоих прямоугольников должно быть равно первому прямоугольнику, чтобы это возвращало true. Функция принимает два аргумента. Первый прямоугольник всегда является окружающим предметом. Второй аргумент либо полностью попадает в первый, либо нет.
Так что ваш код может быть примерно таким
CGPoint location = [touch locationInView:self.view];
CGPoint newLocation = CGPointMake(toggle.center.x, location.y);
CGRect r = CGRectMake(newLocation.x-self.frame.size.width/2,
newLocation.y-self.frame.size.height/2,
self.frame.size.width,
self.frame.size.height);
if(CGRectContainsRect(r, theOtherRect)){
toggle.center = newLocation;
NSLog(@"%f \n",toggle.center.y);
}
Другие полезные функции CoreGraphics: http://blogs.oreilly.com/iphone/2008/12/useful-core-graphics-functions.html
Еще один совет: NSLog(@"%@", NSStringFromCGPoint(toggle.center))
облегчает регистрацию CGTypes. используйте эквивалентно: NSStringFromCGRect(rect)