我正在尝试加载视图控制器,其中加速度计正在移动图像视图。标题中显示错误,应用程序在加载视图时崩溃。
- (void)collsionWithWalls {
CGRect frame = self.Mover.frame;
frame.origin.x = self.currentPoint.x;
frame.origin.y = self.currentPoint.y;
for (UIView *image in self.wall) {
if (CGRectIntersectsRect(frame, image.frame)) {
// Compute collision angle
CGPoint MoverCenter = CGPointMake(frame.origin.x + (frame.size.width / 2),
frame.origin.y + (frame.size.height / 2));
CGPoint imageCenter = CGPointMake(image.frame.origin.x + (image.frame.size.width / 2),
image.frame.origin.y + (image.frame.size.height / 2));
CGFloat angleX = MoverCenter.x - imageCenter.x;
CGFloat angleY = MoverCenter.y - imageCenter.y;
if (abs(angleX) > abs(angleY)) {
_currentPoint.x = self.previousPoint.x;
self.MoverXVelocity = -(self.MoverXVelocity / 2.0);
} else {
_currentPoint.y = self.previousPoint.y;
self.MoverYVelocity = -(self.MoverYVelocity / 2.0);
}
}
}
}
错误显示在该行上: for(UIView * self.wall中的图片){
请帮忙!
答案 0 :(得分:2)
for-in语句语法:
for (UIView *image in self.wall) ...
应该被理解为“对于每个对象,我们将其视为UIView
的指针,并在集合image
中调用self.wall
,执行...”。根据你的说法,self.wall
不是一个集合。这是一个UIImageView
。这就是错误的原因。您正在编写一份需要集合的声明,但您没有提供集合。
那么,为什么你在这里使用for循环呢?没有什么可以循环的。您是否要使用其他表达式来评估集合而不是self.wall
?