每次与另一个图像碰撞时缩放图像

发布于 2024-11-17 14:57:06 字数 486 浏览 1 评论 0原文

这是我的代码:

-(void)collision{
    if(CGRectIntersectsRect(imageView.frame,centre.frame)){
        imageView.alpha=0;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0f];
        centre.transform=CGAffineTransformMakeScale(1.3, 1.3);
        [UIView commitAnimations];
    }
}

当 imageView 与中心中心碰撞时变得更大。 我的问题是,当“imageView”第二次与“center”碰撞时,动画不起作用。我想让中心每次 imageView 与中心碰撞时变得越来越大,但它只变大一次。抱歉我的英语我是法国人:/请问我该如何解决这个问题?

here is my code :

-(void)collision{
    if(CGRectIntersectsRect(imageView.frame,centre.frame)){
        imageView.alpha=0;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0f];
        centre.transform=CGAffineTransformMakeScale(1.3, 1.3);
        [UIView commitAnimations];
    }
}

When imageView collide with centre centre become bigger.
my problem is that when "imageView" collide with "centre" a second time the animation doesn't work. I want to make centre bigger and bigger and bigger every time imageView collide with center, but it become bigger just one time . Sorry for my english I'm french :/ How can I solve this please ?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

终陌 2024-11-24 14:57:06

您的视图没有第二次缩放的原因是您每次都对其应用相同的变换 - 您每次都需要更改应用的变换:

...
centre.transform = CGAffineTransformScale(centre.transform, 1.3, 1.3);
...

The reason your view is not scaled second time is that you apply the same transform to it every time - you need to change applied transformation every time:

...
centre.transform = CGAffineTransformScale(centre.transform, 1.3, 1.3);
...
玩世 2024-11-24 14:57:06

可能是之后没有应用秤。尝试每次增加比例值。声明一个float来跟踪对象的比例。然后,在每次碰撞期间,在执行 CGAffineTransformMakeScale(scale,scale) 之前执行以下

scale = scale + 0.3;

操作:

-(void)collision{
    if(CGRectIntersectsRect(imageView.frame,centre.frame)){
        scale = scale + 0.3;
        imageView.alpha=0;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0f];
        centre.transform=CGAffineTransformMakeScale(scale, scale);
        [UIView commitAnimations];
    }
...

It may be that the scale is not applied after. Try incrementing the scale value each time. Declare a float to keep track of the object's scale. Then, during each collision, before you execute the CGAffineTransformMakeScale(scale, scale) do this:

scale = scale + 0.3;

Example

-(void)collision{
    if(CGRectIntersectsRect(imageView.frame,centre.frame)){
        scale = scale + 0.3;
        imageView.alpha=0;
        [UIView beginAnimations:nil context:nil];
        [UIView setAnimationDuration:1.0f];
        centre.transform=CGAffineTransformMakeScale(scale, scale);
        [UIView commitAnimations];
    }
...
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文