gpt4 book ai didi

ios - CGRectContainsPoint 不返回 YES 但在模拟器上该点在图像中

转载 作者:行者123 更新时间:2023-11-29 12:44:01 26 4
gpt4 key购买 nike

在 viewDidLoad 中,我正在制作一个名为 DeepFryingBasket 的 imageView。您可以用手指左右移动篮子,但不能上下移动。我的第二张图片是一条从屏幕上掉下来的炸薯条。如果炸薯条和篮子发生碰撞,炸薯条应该会消失,看起来就像掉在篮子里一样。这就是为什么我有一个 NSTimer 每 0.01 秒触发一次 CollisionDetection 方法。

问题是,当我用篮子接住炸薯条时,炸薯条并没有消失。我确定调用了 collisionDetection 方法,但编译器从未进入 if 语句,我不知道为什么。非常感谢任何帮助!

- (void)viewDidLoad
{
[super viewDidLoad];
DeepFryingBasket =[[UIImageView alloc] initWithFrame:CGRectMake(110,468,100,80)];
DeepFryingBasket.image = [UIImage imageNamed:@"DeepFryingBasket"];
[self.view addSubview:DeepFryingBasket];
CollisionDetection = [NSTimer scheduledTimerWithTimeInterval:0.01 target:self selector:@selector(collisionDetection) userInfo:nil repeats:YES];
[CollisionDetection fire];
}

-(void)collisionDetection{
if (CGRectContainsPoint (FrenchFrie.frame, DeepFryingBasket.center)){
[FrenchFrie removeFromSuperview];
points = points + 1;
dropped = dropped +1;
}
}

我使用以下代码移动篮子:

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event {
UITouch *touch = [[event allTouches] anyObject];
touchLocation = [touch locationInView:self.view];
frame = DeepFryingBasket.frame;
if (CGRectContainsPoint(frame, touchLocation)){
DeepFryingBasket.center = CGPointMake(touchLocation.x, DeepFryingBasket.center.y);
}
}

编辑:我也尝试添加

    DeepFryingBasket.userInteractionEnabled = YES;

但这并没有太大改变。我还发现,虽然炸薯条随着动画一起掉落,但图像的来源并没有改变。为什么这没有改变?我注意到当我移动篮子时,它的 center.x 会随着我的手指一起移动。我用以下代码移动炸薯条:

-(void)letFrenchFrieFall {
[UIView animateWithDuration:10.0f delay:0 options:UIViewAnimationOptionCurveLinear animations:^{
FrenchFrie.frame = CGRectMake(randomX, (int)[[UIScreen mainScreen] bounds].size.height + 40, FrenchFrie.frame.size.width, FrenchFrie.frame.size.height);
} completion:^(BOOL finished){
[FrenchFrie removeFromSuperview];
}];
}

最佳答案

好的,所以我找到了我自己问题的答案:当 imageView 由于动画而移动时,x 和 Y 坐标设置为动画结束的位置;由于这个原因,不可能用

获取它的位置
FrenchFrie.frame

你可以使用

FrenchFrieFrame = [[FrenchFrie.layer presentationLayer] frame];

获取当前显示的帧。不要忘记包含 Quartzcore 框架并导入它。

#import <QuartzCore/QuartzCore.h>

关于ios - CGRectContainsPoint 不返回 YES 但在模拟器上该点在图像中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24099550/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com