ios - Is it possible to snap UIViews using UISnapBehavior consecutively -
i working on cs193p , create effect cards fly in 0,0 1 after snapping place. tried chain animation views flying trying use uidynamicanimator , same thing happens. views snapping together. here code have snap views.
-(void)snapcardsfornewgame { (playingcardview *cardview in self.cards){ nsuinteger cardviewindex = [self.cards indexofobject:cardview]; int cardcolumn = (int) cardviewindex / self.gamecardsgrid.rowcount; int cardrow = (int) cardviewindex % self.gamecardsgrid.rowcount; uisnapbehavior *snapcard = [[uisnapbehavior alloc]initwithitem:cardview snaptopoint:[self.gamecardsgrid centerofcellatrow:cardrow incolumn:cardcolumn]]; snapcard.damping = 1.0; [self.animator addbehavior:snapcard]; } } -(void)newgame { nsuinteger numberofcardsinplay = [self.game numberofcardsinplay]; (int i=0; i<numberofcardsinplay; i++) { playingcardview *playingcard = [[playingcardview alloc]initwithframe:cgrectmake(0, 0, 50, 75)]; playingcard.faceup = yes; [playingcard addgesturerecognizer:[[uitapgesturerecognizer alloc]initwithtarget:self action:@selector(flipcard:)]]; [self.cards addobject:playingcard]; //nsuinteger cardviewindex = [self.cards indexofobject:playingcard]; //int cardcolumn = (int) cardviewindex / self.gamecardsgrid.rowcount; //int cardrow = (int) cardviewindex % self.gamecardsgrid.rowcount; // playingcard.frame = [self.gamecardsgrid frameofcellatrow:cardrow incolumn:cardcolumn]; playingcard.center = cgpointmake(0, 0); [self.gameview addsubview:playingcard]; [self snapcardsfornewgame]; } } does make sense use in situation? tried few different things cards fly in 1 one wasn't able to.
thanks in advance!
since you're adding uisnapbehaviors @ same time, animator runs them together. delay adding them animator , they'll animated on own.
-(void)snapcardsfornewgame { (playingcardview *cardview in self.cards){ nsuinteger cardviewindex = [self.cards indexofobject:cardview]; int cardcolumn = (int) cardviewindex / self.gamecardsgrid.rowcount; int cardrow = (int) cardviewindex % self.gamecardsgrid.rowcount; uisnapbehavior *snapcard = [[uisnapbehavior alloc]initwithitem:cardview snaptopoint:[self.gamecardsgrid centerofcellatrow:cardrow incolumn:cardcolumn]]; snapcard.damping = 1.0; nstimeinterval delaytime = 0.01 * cardviewindex; dispatch_after(dispatch_time(dispatch_time_now, (int64_t)(delaytime * nsec_per_sec)), dispatch_get_main_queue(), ^{ [self.animator addbehavior:snapcard]; }); } }
Comments
Post a Comment