gpt4 book ai didi

ios - subview 的 CGRectIntersectsRect

转载 作者:行者123 更新时间:2023-11-29 01:33:20 25 4
gpt4 key购买 nike

我正在使用两个 UIImageView,我已经为每个 UIImageView 添加了一个 subview (UIView)。我使用 CGRectIntersectsRect 来检测碰撞,但不起作用。所以我有:

这是第一个 UIImageView

hand = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 13.5, 176)];
[hand setImage:[UIImage imageNamed:@"hand0.png"]];
[hand setContentMode:UIViewContentModeScaleAspectFit];

/// Add SUBVIEW which needs to be detected for collision
hView = [[UIView alloc]initWithFrame:CGRectMake(3, 12, 7, 10)];
[hView setBackgroundColor:[UIColor redColor]];
[hand addSubview:hView];
[hand bringSubviewToFront:hView];

hand.center = self.view.center;
[self.view addSubview:hand];

这是第二个 UIImageView

ball = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 33.5, 176)];
[ball setImage:[UIImage imageNamed:@"ball0.png"]];
[ball setContentMode:UIViewContentModeScaleAspectFit];

/// Add SUBVIEW to detect for collision
bView = [[UIView alloc]initWithFrame:CGRectMake(3, 155, 28, 10)];
[bView setBackgroundColor:[UIColor greenColor]];
[ball addSubview:bView];
[ball bringSubviewToFront:bView];

ball.center = self.view.center;
[self.view addSubview:ball];

这是我的碰撞检测代码,每秒运行一次。

- (void)checkCollision
{
if (CGRectIntersectsRect(bView.frame, hView.frame)) {
//do something here
}
}

知道为什么它没有检测到碰撞吗?我唯一想到的是因为 hView 和 bView 是 UIImageView 的 subview 。

最佳答案

问题是 bViewhView 的框架是相对于它们各自的 super View 的。您需要将它们的帧转换为共同的祖先,以便可以正确地比较它们。 View Controller 的 View 将是一个很好的候选者。

- (void)checkCollision {
CGRect hFrame = [hView convertRect:hView.bounds toView:self.view];
CGRect bFrame = [bView convertRect:bView.bounds toView:self.view];

if (CGRectIntersectsRect(bFrame, hFrame)) {
//do something here
}
}

关于ios - subview 的 CGRectIntersectsRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33226215/

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