2014-04-04 18 views
5

Tôi đã làm theo hướng dẫn rất hữu ích này về cách thêm swiping giống như tinder (http://guti.in/articles/creating-tinder-like-animations/); tuy nhiên, tôi có một vấn đề - khi bức tranh biến mất, tôi muốn thay thế nó bằng một bức ảnh khác. Làm thế nào/nơi nào tôi làm điều đó?Hình động vuốt giống như hình nền cho iOS

+0

Điều dễ nhất để làm sẽ có thêm một cái nhìn kéo bên dưới cái đầu tiên. Sau đó, bạn chỉ cần luân phiên giữa chúng. (Trong khi kéo người đầu tiên, người thứ hai ngồi tại chỗ của nó cho đến khi người đầu tiên bị kéo đi và ngược lại). Vì vậy, 2 quan điểm giống hệt nhau và bạn chỉ cần thay thế cái mà bạn đang kéo và cái nào bị ẩn. – Dima

+0

https://github.com/modocache/MDCSwipeToChoose Điều này có thể giúp bạn tiết kiệm thời gian. – Tim

+0

dùng thử https://github.com/nickypatson/TinderSwipeView – nickypatson

Trả lời

4

Tôi đã xây dựng một dự án đơn giản và toàn diện hơn dựa trên hướng dẫn đó. Đặc biệt, bạn có thể sử dụng một loạt các hình ảnh và gán cho mỗi thẻ một hình ảnh dựa trên chỉ mục của hình ảnh. Các hình ảnh có động hoặc tĩnh không?

không thể giúp vào thời điểm này, nhưng ở đây nó là anyway: https://github.com/cwRichardKim/TinderSimpleSwipeCards

0

câu trả lời này được xây dựng trên mã/trả lời từ cwRichardKim (cảm ơn bạn cwRichardKim!). tôi không tìm thấy hướng dẫn cách thêm hình ảnh vào từng thẻ. dán cách tiếp cận của tôi dưới đây (trong examlple này, url hình ảnh cứng mã hóa, nhưng trong ứng dụng thực tế có thể có được url hình ảnh từ điện toán đám mây):

trong DraggableView.h:

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

trong 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]; 

trong DraggableViewBackground.h:

@property(retain,nonatomic)NSArray* exampleCardUrls; 

trong 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; 

} 
2

việc kiểm tra này ra, viết bằng nhanh chóng 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 
    } 
} 

hãy panGestureRecognizer = UIPanGestureRecognizer (mục tiêu: tự, hành động : #selector (self.beingDragged)) addGestureRecognizer (panGestureRecognizer)

Hy vọng điều này sẽ hiệu quả. Hãy cho tôi biết

nhờ

Các vấn đề liên quan