2010-06-10 4 views
0

J'ai un UIView au milieu d'une vue que j'utilise comme zone de jeu (dans une vue cacao 2d). Cette image possède une image d'arrière-plan de la même taille que la vue. Redimensionnement de la vue J'utilise une animation pour la rendre lisse (et cela fonctionne bien). Cependant, lorsque l'animation commence, l'image d'arrière-plan change immédiatement de taille, de mosaïque ou d'écrêtage à une taille qui, lorsque l'animation se termine, l'image d'arrière-plan est physiquement de la même taille.Redimensionnement de l'image d'arrière-plan lors de l'animation de UIView

Je ne veux pas cela, je veux que l'image corresponde toujours à la vue, quelle que soit la taille de la vue.

UIImage *bgImage = [UIImage imageNamed:@"head.png"]; 
... // resize the image returning another image 
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:resizedImage]; 
[UIView beginAnimations:@"resizeView" context:nil]; 
[UIView setAnimationDuration:.5]; 
int localViewSize = ... // work out view sizes 
self.view.frame = CGRectMake(... ,localViewSize,localViewSize); 
[UIView commitAnimations]; 

Il semble très étrange car il saute à une taille différente, puis anime à la taille d'origine.

Je devine que je devrais peut-être faire une vue séparée sous ma vue principale mais est-ce la seule manière?

Répondre

1

Je soupçonne que "l'image de motif" est rendue au contenu de la couche (effectivement une texture), et le contenu de la couche est étiré pour s'adapter. Le moyen le plus facile est de régler self.contentMode = UIViewContentModeCenter ou plus; Gardez à l'esprit que cela fonctionne lorsque votre vue augmente mais affichera probablement une bordure vide lorsque votre vue est réduite.

+0

Donc, le contenu est redimensionné pour s'adapter à la nouvelle vue, puis l'animation se produit? Je vais essayer le mode de contenu central, bien que je souhaite idéalement que l'image de fond prenne l'ensemble de la vue à n'importe quel zoom. Merci – Woody

+0

Si l'image est assez grande, il suffit d'utiliser l'image dans un UIImageView avec le mode de contenu correct et de définir clipsToBounds = YES. –

+0

J'ai décidé pour le moment de le faire d'une autre manière, car ça ne marchait pas bien! – Woody