2010-10-10 8 views
2

J'ai un UIView et sa sous-vue. Quand j'anime myView (size.x + 20) ma sous-vue est aussi animée, mais je veux traduire ma sous-vue en même temps indépendamment (origin.x-40) (sans que la sous-vue ne bouge à cause du redimensionnement de myView).ObjC - UIViews: l'animation de la vue et de la sous-vue est-elle indépendante?

J'ai été capable de le faire en ajustant les traductions (ou une meilleure position, parce que je pourrais vouloir changer y plus tard) .fromValue, .toValue et .duration pour compenser le mouvement provoqué par des changements à myView.

UIView beginAnimations:nil context:NULL]; 
[myView setFrame:pVnewFrame]; 
[UIView commitAnimations]; 

CABasicAnimation *bBTranslateAnimation = [CABasicAnimation animationWithKeyPath:@"position"]; 
bBTranslateAnimation.delegate = self; 
bBTranslateAnimation.fromValue = [NSValue valueWithCGPoint:CGPointMake(160, 480)]; 
bBTranslateAnimation.toValue = [NSValue valueWithCGPoint:CGPointMake(160, 436)]; 
bBTranslateAnimation.duration = 0.35; 
[buttonBar addAnimation:bBTranslateAnimation forKey:@"anim"]; 

Mais ce n'est pas une bonne solution. Existe-t-il un bon moyen de déplacer la vue et les sous-vues indépendamment? (réglage autoresizeSubviews et autoresizingMask ne aide pas)

Merci d'avance!

Répondre

3

La manière de faire est de faire les deux vues frères, au lieu de faire une vue une sous-vue de l'autre. Il suffit de mettre la vue qui était la sous-vue en haut de la vue qui était la vue parente, et cela devrait ressembler à ce que vous voulez. Si vous souhaitez que la vue "enfant" se connecte au contenu de l'ancienne vue parente, vous devrez peut-être placer la vue qui était l'enfant dans une vue de conteneur qui est un frère de la vue qui était le parent, et définissez la vue du conteneur sur opaque = non et avec une couleur d'arrière-plan claire. Cela affectera les performances, cependant.