首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >两个UIViewImages的交集

两个UIViewImages的交集
EN

Stack Overflow用户
提问于 2012-06-01 21:06:20
回答 3查看 2.3K关注 0票数 3

如何确定两个uiviewimage是否相交。我想做一个自动捕捉功能。当小图像与大图像相交或接近时(让distance<=x说),我希望小图像自动捕捉(连接)到大图像的交叉点处。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-06-02 12:49:49

前两张海报已经在CGRectIntersectsRect的正确轨道上。

代码语言:javascript
复制
BOOL isIntersecting = CGRectIntersectsRect(smallImage.frame, largeImage.frame);
if(isIntersecting){

    //Animate the Auto-Snap
    [UIView beginAnimation:@"animation" context:nil];
    [UIView setAnimationDuration:0.5];
    smallImage.frame = largeImage.frame;
    [UIView commitAnimations];
}

基本上,这意味着如果两个图像相交,小图像帧将在0.5秒内捕捉到较大的图像。不过,您不必对其进行动画处理;您只需删除除smallImage.frame = largeImage.frame;之外的所有代码,即可使其瞬间生效。但是,我推荐使用动画的方式。希望这能有所帮助。

-编辑

您可以使用以下代码:

代码语言:javascript
复制
 BOOL isIntersecting = CGRectIntersectsRect(smallImage.frame, largeImage.frame);
 if(isIntersecting){     
     //Animation
     [UIView beginAnimation:@"animation" context:nil];
     [UIView setAnimationDuration:0.5];

     smallImage.center = CGPointMake(largeImage.center.x, largeImage.center.y);

     //If you want to make it like a branch, you'll have to rotate the small image
     smallImage.transform = CGAffineTransformMakeRotation(30);
     //The 30 is the number of degrees to rotate. You can change that.

     [UIView commitAnimations];
 }

希望这解决了你的问题。记住,如果这有帮助,请投票并选择答案。

-EDIT-最后一件事。我说CGAffineTransformMakeRotation(30)中的" 30“代表30度,但这是不正确的。CGAffineTransformMakeRotation函数以弧度为单位接受其参数,因此,如果您想要30度,可以这样做:

代码语言:javascript
复制
#define PI 3.14159265

CGAffineTransformMakeRotation(PI/6);
票数 1
EN

Stack Overflow用户

发布于 2012-06-01 21:13:04

代码语言:javascript
复制
CGRect bigframe = CGRectInset(bigView.frame, -padding.x, -padding.y);

BOOL isIntersecting = CGRectIntersectsRect(smallView.frame, bigFrame);
票数 2
EN

Stack Overflow用户

发布于 2012-06-01 21:13:55

您可以使用CGRectIntersectsRect方法检查帧:

代码语言:javascript
复制
 if (CGRectIntersectsRect(myImageView1.frame, myImageView2.frame))
    {
        NSLog(@"intersected")
    }
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10850895

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档