У меня есть две кнопки, которые я удерживаю, и они перемещают изображение по экрану, влево или вправо, я хочу, чтобы изображение останавливалось на краю экрана, хотя и не могло двигаться дальше, я не понимаю, как добавить код для этого.Как добавить ограничения на координаты изображения
-(IBAction)Left:(id)sender{
[MenuClick play];
LeftTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(GoLeft) userInfo:nil repeats:YES];
if (Left == nil) {
LeftTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(GoLeft) userInfo:nil repeats:YES];
}
}
-(IBAction)StopLeft:(id)sender{
[LeftTimer invalidate];
LeftTimer = nil;
}
-(IBAction)Right:(id)sender{
[MenuClick play];
RightTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(GoRight) userInfo:nil repeats:YES];
if (Right == nil) {
RightTimer = [NSTimer scheduledTimerWithTimeInterval:0.05 target:self selector:@selector(GoRight) userInfo:nil repeats:YES];
}
}
-(IBAction)StopRight:(id)sender{
[RightTimer invalidate];
RightTimer = nil;
}
-(void)GoLeft{
Ship.center = CGPointMake(Ship.center.x -5, Ship.center.y);
}
-(void)GoRight{
Ship.center = CGPointMake(Ship.center.x +5, Ship.center.y);
}
Это только движение корабля на 5 раз, а затем останавливается, когда кадр корабля будет пересекать границы вида. –
Вы правы, я должен использовать: 'if (! CGRectContainsRect (self.view.bounds, ship.frame))' – Camo
На самом деле это по-прежнему будет перемещать корабль за пределы экрана на 5, поскольку он устанавливает 'ship.center' прежде чем он выполнит проверку, что по сути является моим ответом, за исключением того, что он выполняет сам расчет, а не полагается на «CGRectContainsRect». –