适用于iOS的Tinder-Like Swipe Animation

我已经按照这个非常有用的教程来介绍如何添加类似于tinder的滑动( http://guti.in/articles/creating-tinder-like-animations/ ); 但是,我有一个问题 – 当图片消失时,我想用另一张图片替换它。 我是怎么做的?

我基于该教程构建了一个更简单,更全面的项目。 特别是,您可以使用一组图像,并根据图像的索引为每张卡分配一个图像。 图像是动态的还是静态的?

在这一点上可能没有帮助,但无论如何它在这里: https : //github.com/cwRichardKim/TinderSimpleSwipeCards

看看这个,写在swift 4

https://github.com/nickypatson/TinderSwipeView

func beingDragged(_ gestureRecognizer:UIPanGestureRecognizer){

xFromCenter = gestureRecognizer.translation(in: self).x yFromCenter = gestureRecognizer.translation(in: self).y switch gestureRecognizer.state { //%%% just started swiping case .began: originalPoint = self.center; break; //%%% in the middle of a swipe case .changed: let rotationStrength = min(xFromCenter / ROTATION_STRENGTH, ROTATION_MAX) let rotationAngel = .pi/8 * rotationStrength let scale = max(1 - fabs(rotationStrength) / SCALE_STRENGTH, SCALE_MAX) center = CGPoint(x: originalPoint.x + xFromCenter, y: originalPoint.y + yFromCenter) let transforms = CGAffineTransform(rotationAngle: rotationAngel) let scaleTransform: CGAffineTransform = transforms.scaledBy(x: scale, y: scale) self.transform = scaleTransform updateOverlay(xFromCenter) break; case .ended: afterSwipeAction() break; case .possible:break case .cancelled:break case .failed:break } } 

让panGestureRecognizer = UIPanGestureRecognizer(target:self,action:#selector(self.beingDragged))addGestureRecognizer(panGestureRecognizer)

希望这会奏效。 让我知道

谢谢

这个答案建立在cwRichardKim的代码/回复之上(谢谢你cwRichardKim!)。 我没有找到如何为每张卡添加图像的指南。 粘贴我的方法下面(在这个例子中,图像url硬编码,但在真正的应用程序可以从云获取图像URL):

在DraggableView.h中:

 @property (nonatomic,strong)UIImageView* photoImageView; //%%% a placeholder for member photo to place on card 

在DraggableView.m中:

 ... @synthesize photoImageView; ... // - (id)initWithFrame:(CGRect)frame ... // add photo to card //You need to specify the frame of the view UIView *photoView = [[UIView alloc] initWithFrame:CGRectMake(0,0,self.frame.size.width,self.frame.size.width)]; photoImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"place_holder_image.png"]]; // UIImageView *imageView = [[UIImageView alloc] initWithImage:photo]; //specify the frame of the imageView in the superview , here it will fill the superview photoImageView.frame = photoView.bounds; // add the imageview to the superview [photoView addSubview:photoImageView]; //add the view to the main view [self addSubview:photoView]; 

在DraggableViewBackground.h中:

 @property(retain,nonatomic)NSArray* exampleCardUrls; 

在DraggableViewBackground.m中:

 ... @synthesize exampleCardUrls; ... exampleCardUrls = [[NSArray alloc]initWithObjects:@"http://images.clipartpanda.com/clipart-people-nTBX8zkgc.jpeg",@"http://epilepsyu.com/wp-content/uploads/2014/01/happy-people.jpg",@"http://alivecampus.com/wp-content/uploads/2014/09/people-02.jpg",@"https://www.google.com/images/srpr/logo11w.png",@"http://modalpoint.com/wp-content/uploads/2014/11/people-blue-stick-people-hi.png", nil]; ... // ... -(DraggableView *)createDraggableViewWithDataAtIndex:(NSInteger)index ... // retrieve image for cell in background NSURL *url = [NSURL URLWithString:exampleCardUrls[index]]; [self loadImage:url withIndex:index]; ... #pragma mark - cloud, load image - (void)loadImage:(NSURL *)imageURL withIndex:(NSInteger)index { // create array of objects to pass to next method NSMutableArray* params = [[NSMutableArray alloc]init]; [params addObject:imageURL]; NSNumber *indexNumber = [NSNumber numberWithInt:index]; [params addObject:indexNumber]; NSOperationQueue *queue = [NSOperationQueue new]; NSInvocationOperation *operation = [[NSInvocationOperation alloc] initWithTarget:self selector:@selector(requestRemoteImage:) object:params]; [queue addOperation:operation]; } - (void)requestRemoteImage:(NSMutableArray*)params { // get data from params NSURL* imageURL = params[0]; NSData *imageData = [[NSData alloc] initWithContentsOfURL:imageURL]; UIImage *image = [[UIImage alloc] initWithData:imageData]; params[0] = image; [self performSelectorOnMainThread:@selector(placeImageInUI:) withObject:params waitUntilDone:YES]; } - (void)placeImageInUI:(NSArray*)params { // get data from params UIImage* image = params[0]; NSNumber* indexNumber = params[1]; NSInteger index = [indexNumber integerValue]; DraggableView* myDraggableView = allCards[index]; myDraggableView.photoImageView.image = image; allCards[index] = myDraggableView; }