gpt4 book ai didi

iphone - 如何检查 CGPoint 是否在 UIImageView 内部?

转载 作者:行者123 更新时间:2023-12-03 19:05:09 24 4
gpt4 key购买 nike

touchesBegan中:

CGPoint touch_point = [[touches anyObject] locationInView:self.view];

周围有数十个 UIImageView,存储在 NSMutableArray images 中。我想知道是否有一个内置函数来检查 CGPoint (touch_point) 是否位于其中一张图像内,例如:

for (UIImageView *image in images) {
// how to test if touch_point is tapped on a image?
}

谢谢

跟进:

出于未知原因,pointInside 永远不会返回 true。这是完整的代码。

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
UITouch *touch = [touches anyObject];
touch_point = [touch locationInView:self.view];
for (UIImageView *image in piece_images) {
if ([image pointInside:touch_point withEvent:event]) {
image.hidden = YES;
} else {
image.hidden = NO;
}
NSLog(@"image %.0f %.0f touch %.0f %.0f", image.center.x, image.center.y, touch_point.x, touch_point.y);
}
}

尽管我可以看到 NSLog 输出中的两点有时是相同的。

我也尝试过:

  if ([image pointInside:touch_point withEvent:nil]) 

结果是一样的。永远不会返回 true。

为了消除任何与图像相关的可能性。我尝试了以下方法:

  if (YES or [image pointInside:touch_point withEvent:event])

第一次点击屏幕后,所有图像都会隐藏。

编辑2:

真的很奇怪。即使我对此进行了硬编码:

        point.x = image.center.x;
point.y = image.center.y;

代码变为:

    - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event 
{
UITouch *touch = [touches anyObject];
CGPoint point; // = [touch locationInView:self.view];
for (UIImageView *image in piece_images) {
point.x = image.center.x;
point.y = image.center.y;
if ([image pointInside:point withEvent:event]) {
image.hidden = YES;
NSLog(@"YES");
} else {
image.hidden = NO;
NSLog(@"NO");
}
NSLog(@"image %.0f %.0f touch %.0f %.0f", image.center.x, image.center.y, point.x, point.y);
}
}

pointInside 始终返回 false ...

最佳答案

在我看来,问题是您需要将坐标从 View 的坐标转换为 UIImageView 的坐标。您可以使用 UIViewconvertPoint 方法。

尝试更换

if ([image pointInside:touch_point withEvent:event]) {

if ([image pointInside: [self.view convertPoint:touch_point toView: image] withEvent:event]) {

(请注意,您可以传递 nil 而不是 event。)

我想这对于提问者来说有点晚了,但我希望它对某人有用。

关于iphone - 如何检查 CGPoint 是否在 UIImageView 内部?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2958808/

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