CGRectIntersectsRect在悬停时更改图像

时间:2015-01-26 21:36:09

标签: ios objective-c xcode uiimage cgrect

所以我必须知道,一个是产品而另一个是垃圾桶。现在我有它所以你可以将产品拖入垃圾桶,当你发布它将检查CGRectIntersectsRect然后在产品上运行删除功能。我现在想要做到这一点,当你在垃圾桶上空盘旋时,垃圾桶会变成一个发光的垃圾桶(这样你就知道你将要删除该物品)。现在我假设这将是一个简单的图像悬停变化。所以我尝试了以下但它似乎不起作用。

UIImage *hoverImage = [UIImage imageNamed: @"trashHover.png"];
[deleteItemButton setImage:hoverImage forState:UIControlStateHighlighted];

任何关于如何获得它的想法,以便当一个矩形在另一个矩形之上时我们可以改变图像?或者我应该做其他事情,然后CGRectIntersectsRect?

1 个答案:

答案 0 :(得分:1)

当用户开始触摸该给定元素时,将设置UIControlStateHighlighted状态。用户必须开始触摸垃圾桶而不是拖动的项目。来自文档:

  

控件的突出显示状态。控件在a时进入此状态   在跟踪期间和触摸时触摸进入和退出   事件。您可以通过突出显示来检索和设置此值   属性。

为了在拖动其他图片时让垃圾桶成像,您必须回复touchesMoved:withEvent回调。

-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    for (UITouch *touch in touches)
    {
        CGPoint touchPoint = [touch locationInView:self.view];
        CGPoint buttonPoint = [self.view convertPoint:touchPoint toView:self.someButton];

        if ([self.someButton pointInside:buttonPoint withEvent:event])
        {
            [self.someButton setImage:[UIImage imageNamed:@"highlight"] forState:UIControlStateNormal];
        }
        else
        {
            [self.someButton setImage:[UIImage imageNamed:@"normal"] forState:UIControlStateNormal];
        }
    }
}