У меня есть UIImageView
путешествие на UIBezierPath
:UIImageView анимации на UIBezierPath не обнаруживает столкновение
- (void)viewDidLoad {
[super viewDidLoad];
UIBezierPath *path = [UIBezierPath bezierPath];
[path moveToPoint:CGPointMake(60, 60)];
[path addLineToPoint:CGPointMake(70, 70)];
[path addLineToPoint:CGPointMake(80, 120)];
[self.thingy setImage:[UIImage imageNamed:@"titles.png"]];
[self.thingy.layer setPosition:CGPointMake(60, 60)];
[self.view.layer addSublayer:self.thingy.layer];
CAKeyframeAnimation *anim = [CAKeyframeAnimation animationWithKeyPath:@"position"];
anim.path = path.CGPath;
anim.rotationMode = kCAAnimationRotateAuto;
anim.duration = 8.0;
[self.thingy.layer addAnimation:anim forKey:@"move"];
self.timer = [NSTimer scheduledTimerWithTimeInterval:1
target:self
selector:@selector(tester)
userInfo:nil
repeats:YES];
}
Цель: Я хочу, чтобы обнаружить, является ли thingy
сталкивается с barrier
. Вот tester
:
- (void) tester {
NSLog(@"calling method");
if (CGRectIntersectsRect(self.thingy.frame, self.barrier.frame)) {
NSLog(@"collided");
}
}
barrier
и thingy
оба UIImageViews
объявлены как weak
и nonatomic
в файле заголовка.
Проблема: tester
всегда вызывается каждую секунду, но когда два столкновений не происходят, ничего не происходит. Любая помощь, чтобы попытаться сделать эту работу?