Podążyłem za bardzo pomocnym samouczkiem na temat dodawania przeciągania podobnego do igły (http://guti.in/articles/creating-tinder-like-animations/); jednak mam jeden problem - gdy obraz odchodzi, chcę go zastąpić innym obrazem. Jak/gdzie mam to zrobić?Animacja z napisem "Tinder-Like Swipe" dla iOS
Odpowiedz
Zbudowałem prostszy i bardziej kompleksowy projekt oparty na tym samouczku. W szczególności można użyć tablicy obrazów i przypisać każdej karcie obraz oparty na indeksie obrazu. Czy obrazy będą dynamiczne lub statyczne?
nie może pomóc w tym momencie, ale tutaj jest to w każdym razie: https://github.com/cwRichardKim/TinderSimpleSwipeCards
ta odpowiedź opiera się na kodzie/odpowiedzi od cwRichardKim (dziękuję cwRichardKim!). nie znalazłem przewodnika, jak dodawać zdjęcia do każdej karty. wklejenie mojego podejścia poniżej (w tym examlple, obraz zakodowany url ciężko, ale w prawdziwej aplikacji można uzyskać URL obrazu z chmurą):
w DraggableView.h:
@property (nonatomic,strong)UIImageView* photoImageView; //%%% a placeholder for member photo to place on card
w 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];
w DraggableViewBackground.h:
@property(retain,nonatomic)NSArray* exampleCardUrls;
w 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;
}
sprawdzić to uwagę, napisany w szybkim 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
}
}
niech panGestureRecognizer = UIPanGestureRecognizer (docelowa: samodzielne działanie : #selector (self.beingDragged)) addGestureRecognizer (panGestureRecognizer)
Mam nadzieję, że to zadziała. Daj mi znać
dzięki
- 1. RecyclerView ItemTouchHelper swipe usunąć animacja
- 2. iOS: springWithDamping like animacja dla animacji KeyFrame
- 3. Animacja iOS Animacja obrotu pod kątem
- 4. Natywna animacja w iOS
- 5. iOS 8 błąd z odrzuceniemViewControllerAnimated: zakończenie: animacja?
- 6. Animacja rdzenia iOS - składanie warstwy
- 7. Swipe UITableViewCell bez dotyku
- 8. Gest UIButton and Swipe
- 9. Android - Swipe usunąć RecyclerView
- 10. Swipe Usuwanie Tableview Row
- 11. Swipe usunąć na CollectionView
- 12. Elementy RecyclerView ItemTouchHelper w Swipe
- 13. Replication Google Search iOS Karty Animacja
- 14. iOS - animacja ruchu etykiety lub obrazu
- 15. Animacja iOS wyłączania push i push
- 16. Animacja jQuery dla zawisu z "kierunkiem myszy"
- 17. iOS: animacja niepoprawnej orientacji w rootViewController?
- 18. Animacja okładki iOS do animacji w iOS i ułatwienie dostępu
- 19. Animacja iOS Animowana przerywana ramka prostokątna
- 20. Animacja Rozwijaj/Zmniejszenie iOS Rozmiar ImageView
- 21. Niestandardowa animacja zmiany orientacji interfejsu iOS z OpenGL
- 22. Moduł ES6 Importowanie z napisem "Uncaught SyntaxError: nieoczekiwany identyfikator"
- 23. Android Animacja niestandardowa dla ArcShape
- 24. Różnica między ConnectionTimeoutException i SSLException z napisem "Connection timed out"
- 25. HTML5 Tekst wypełnienia Canvas z napisem od prawej do lewej
- 26. Angular JS Touch and Swipe
- 27. Konsola Chrome/Firefox.log zawsze dołącza wiersz z napisem niezdefiniowanym.
- 28. Jak pobrać plik z napisem google w Androidzie
- 29. animacja z dwoma interpolatorami
- 30. Animacja migotania z Androidem
Najprostszym rozwiązaniem byłoby dodać kolejną Draggable widok spodu pierwszego. Potem po prostu przełączasz się między nimi. (Podczas przeciągania pierwszego, drugi siedzi w swoim miejscu, aż pierwszy zostanie usunięty i na odwrót). Więc 2 identyczne widoki, a ty po prostu naprzemiennie, który przeciągasz, a który ukryty. – Dima
https://github.com/modocache/MDCSwipeToChoose Może to zaoszczędzić trochę czasu. – Tim
wypróbuj to https://github.com/nickypatson/TinderSwipeView – nickypatson