Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/96.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone 可能的话,用另一个UIImageView推送一个UIImageView?_Iphone_Ios_Ipad_Uiimageview_Uigesturerecognizer - Fatal编程技术网

Iphone 可能的话,用另一个UIImageView推送一个UIImageView?

Iphone 可能的话,用另一个UIImageView推送一个UIImageView?,iphone,ios,ipad,uiimageview,uigesturerecognizer,Iphone,Ios,Ipad,Uiimageview,Uigesturerecognizer,是否可以平移一个UIImageView,当它与另一个UIImageView的框架相交时,让另一个UIImageView在不经过它的情况下推动另一个UIImageView?我希望这是有道理的 如果可能的话,你能给我一些关于如何实施的想法吗 我想会是这样的 如果框架在x/y轴上从左或右与框架相交,则让另一个框架以与推动框架相同的距离沿同一方向移动。虽然这种逻辑对我来说有些道理,但我不确定如何在代码中实现它 我真的很感激你能提供的任何建议。听起来你最好在精灵、交叉点和一些基本物理方面使用Cocos2D

是否可以平移一个UIImageView,当它与另一个UIImageView的框架相交时,让另一个UIImageView在不经过它的情况下推动另一个UIImageView?我希望这是有道理的

如果可能的话,你能给我一些关于如何实施的想法吗

我想会是这样的

如果框架在x/y轴上从左或右与框架相交,则让另一个框架以与推动框架相同的距离沿同一方向移动。虽然这种逻辑对我来说有些道理,但我不确定如何在代码中实现它


我真的很感激你能提供的任何建议。

听起来你最好在精灵、交叉点和一些基本物理方面使用Cocos2D…

听起来你最好在精灵、交叉点和一些基本物理方面使用CoCoCoS2D…

所以,你只关心左/右平移

假设您有2个UIImageView,a和b,作为其他UIView的子视图,并定义为某个类的类成员

通过创建UIPanGestureRecognizer的实例并使用addGestureRecognizer方法将其添加到每个UIImageView,您可以获得检测每个视图上的平移手势(拖动触摸)的帮助:

创建每个UIPangestureRecognitor时,需要指定一个选择器来接收手势事件。比方说它叫didMove:

下面是一些示例代码:

- (void) didMove:(UIPanGestureRecognizer*)recognizer {
    UIView* view = [recognizer view];

    // Remember our UIImageViews are class members called, a & b
    //
    UIView* otherView = view == a ? b : a;    

    if (recognizer.state == UIGestureRecognizerStateBegin 
        || recognizer.state == UIGestureRecognizerStateChanged) {

        // Moving left will have a negative x, moving right positive
        //
        CGPoint translation = [recognizer translationInView:view.superview];
        view.center = CGPointMake(view.center.x + translation.x, view.center.y);

        // Reset so we always track the translation from the current view position
        //
        [recognizer setTranslation:CGPointZero inView:view.superview];

        if (CGRectIntersectsRect(view.frame, otherView.frame)) {
            // Translate by the same number of points to keep views in sync
            //
            otherView.center = CGPointMake(otherView.center.x + translation.x, otherView.center.y);
        }
    }
}

它可能并不完全是您所需要的,但它应该会给您一个很好的想法,如何可以做到这一点。

所以,您只关心左/右平移

假设您有2个UIImageView,a和b,作为其他UIView的子视图,并定义为某个类的类成员

通过创建UIPanGestureRecognizer的实例并使用addGestureRecognizer方法将其添加到每个UIImageView,您可以获得检测每个视图上的平移手势(拖动触摸)的帮助:

创建每个UIPangestureRecognitor时,需要指定一个选择器来接收手势事件。比方说它叫didMove:

下面是一些示例代码:

- (void) didMove:(UIPanGestureRecognizer*)recognizer {
    UIView* view = [recognizer view];

    // Remember our UIImageViews are class members called, a & b
    //
    UIView* otherView = view == a ? b : a;    

    if (recognizer.state == UIGestureRecognizerStateBegin 
        || recognizer.state == UIGestureRecognizerStateChanged) {

        // Moving left will have a negative x, moving right positive
        //
        CGPoint translation = [recognizer translationInView:view.superview];
        view.center = CGPointMake(view.center.x + translation.x, view.center.y);

        // Reset so we always track the translation from the current view position
        //
        [recognizer setTranslation:CGPointZero inView:view.superview];

        if (CGRectIntersectsRect(view.frame, otherView.frame)) {
            // Translate by the same number of points to keep views in sync
            //
            otherView.center = CGPointMake(otherView.center.x + translation.x, otherView.center.y);
        }
    }
}

它可能并不完全是你所需要的,但它应该给你一个好主意如何可以做到这一点。

你可以这样做

首先,创建UIImageView并为其指定UIImage

第二,当用户刷卡或做任何手势时,只需通过再次设置卡框来更改卡的坐标即可

因为你想让卡片滑开,你必须把x坐标改成负值,这样它才能从视图中滑开

上述重构imageview的代码应在UIView setAnimation方法组中给出,并具有所需的延迟

要实现推送效果,请在相同的代码动画块中调用一个方法,该方法创建一个新的imageview(与第一个imageview同名),并将其保留在视图之外。那超出了屏幕的宽度。(别忘了释放先前被推开的卡)

然后,再次为该imageview创建一个新帧,使其显示在屏幕中央……当上述三个代码步骤以延迟时间放入UIView或UIImageView的动画代码块中时,u将达到所需效果

希望这有帮助


快乐编码…

你可以这样做

首先,创建UIImageView并为其指定UIImage

第二,当用户刷卡或做任何手势时,只需通过再次设置卡框来更改卡的坐标即可

因为你想让卡片滑开,你必须把x坐标改成负值,这样它才能从视图中滑开

上述重构imageview的代码应在UIView setAnimation方法组中给出,并具有所需的延迟

要实现推送效果,请在相同的代码动画块中调用一个方法,该方法创建一个新的imageview(与第一个imageview同名),并将其保留在视图之外。那超出了屏幕的宽度。(别忘了释放先前被推开的卡)

然后,再次为该imageview创建一个新帧,使其显示在屏幕中央……当上述三个代码步骤以延迟时间放入UIView或UIImageView的动画代码块中时,u将达到所需效果

希望这有帮助


快乐编码…

如果不使用Cocos2D,此功能将很难实现?仅此而已,需要大量计算和自定义动画。这不是什么让人难以接受的想法。如果不使用Cocos2D,这个功能将很难实现?仅此而已,需要大量的计算和自定义动画。不是什么让人无法抗拒的想法是的。。。我基本上在寻找一种方法,根据平移手势的移动方向,使用一个UIImageView向左或向右滑动另一个UIImageView。你的意思是当用户滑动时,当前图像应该被下一个图像推到左侧?是的。。。我基本上是在寻找一种方法,根据平移手势的移动方向,使用一个UIImageView向左或向右滑动另一个UIImageView。你的意思是当用户滑动时,当前图像应该被下一个图像推到左侧?