J'ai ce morceau de code qui est placé dans accelerometer: didAccelerate
qui change le recadrage d'une image. Fondamentalement, lorsque vous inclinez un iPad, une image est tronquée (non redimensionnée), ce qui est exactement l'effet que je recherche. Note: self.xPos
est effectuée par la position de l'accéléromètre.x.Animer le recadrage de UIView/UIImageView
UIImage *originalStringImage = [UIImage imageNamed:@"string.png"];
CGImageRef imageRef = CGImageCreateWithImageInRect([originalStringImage CGImage], CGRectMake(0.0f,0.0f, self.xPos+50.0f, 26.0f));
[self.stringImageView setImage:[UIImage imageWithCGImage:imageRef]];
self.stringImageView.frame = CGRectMake(10.0f, self.stringYPos, self.xPos+50.0f, 26.0f);
Maintenant, je voudrais faire exactement la même chose, bien que comme une animation UIView. Quelque chose entre ces paramètres d'animation UIView:
UIImageView *pageStringImageView = [[UIImageView alloc] initWithFrame:CGRectMake(10.0f, placeString, 0.0f, 42.0f)];
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDelay:2.0];
[UIView setAnimationDuration:3.0];
pageStringImageView.frame = CGRectMake(10.0f, placeString, 900.0f, 42.0f);
UIImage *originalStringImage = [UIImage imageNamed:@"string.png"];
CGImageRef imageRef = CGImageCreateWithImageInRect([originalStringImage CGImage], CGRectMake(10.0f,placeString, pageStringImageView.frame.origin.x, 42.0f));
[pageStringImageView setImage:[UIImage imageWithCGImage:imageRef]];
[UIView commitAnimations];
Mais ce qui précède ne fonctionne pas du tout. En fait, il ne montre même pas l'image. Je crois que la principale difficulté ici est de changer dynamiquement la taille de l'image pendant l'exécution de l'animation UIView.
Des suggestions ou des questions?
Votre réponse a été très instructive. Bien joué! –
En outre, la partie clip to bounds a fait la différence. Sans cela je ne pourrais pas le faire fonctionner: 'imageview.clipsToBounds = YES' –