2010-06-15 4 views
2

J'ai une vue que je veux étendre sur le côté gauche en utilisant une animation. Toutes les bordures, mais la gauche doit rester la même, donc la position x et la largeur de la vue changent.Extension d'une vue sur le côté gauche, animée

J'utilise ce code:

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:5.0]; 
self.frame = CGRectMake(self.frame.origin.x-100, 
         self.frame.origin.y, 
         self.frame.size.width+100, 
         self.frame.size.height); 
[UIView commitAnimations]; 

Si je lance ce code, la largeur de la vue est réglée sur la nouvelle valeur immédiatement et la vue est déplacé vers le nouveau point x, mais pourquoi? Comment puis-je changer ce comportement?

Merci pour vos idées!

Répondre

0

Votre code fonctionne bien pour moi. Comment l'utilisez-vous? Appeler -setFrame est le bon choix pour ce que vous faites. Voici ce que mon affichage personnalisé ressemble à:

#import "TestView.h" 

@implementation TestView 

- (id)initWithFrame:(CGRect)frame { 
    if ((self = [super initWithFrame:frame])) { 
     // Initialization code 
    } 
    return self; 
} 

- (void)dealloc { 
    [super dealloc]; 
} 

- (void)go; 
{ 
    [UIView beginAnimations:nil context:nil]; 
    [UIView setAnimationDuration:5.0]; 
    self.frame = CGRectMake(self.frame.origin.x-100, 
           self.frame.origin.y, 
           self.frame.size.width+100, 
           self.frame.size.height); 
    [UIView commitAnimations]; 
} 

@end 

Je crée une sortie de mon contrôleur de vue du type TestView et le connecter et définissez son type dans IB. Ensuite, je crée un bouton dont le gestionnaire appelle [customView go]; Ça semble fonctionner correctement.

+0

Je commence mon code après avoir appuyé sur le bouton, donc toutes les initialisations de vue doivent avoir été effectuées. – Erik

+0

J'ai maintenant essayé de changer seulement la taille de la vue en utilisant la propriété frame, mais aucune animation ne se produit. Si j'essaie de changer la taille en utilisant la propriété bounds, la vue se déplace ... n'est-ce pas un peu étrange? – Erik

+0

Voici un projet de démonstration que j'ai fait. Voyez si vous pouvez trouver la différence entre ce que vous faites et ce que j'ai: http://www.cimgf.com/files/GrowViewLeft.zip –

0

D'accord, je l'ai fait woring maintenant. Le problème était que mon point de vue était un UIButton et j'ai défini le titre et l'arrière-plan avec les setBackground:forState: et setTitle:forState:. Il semble que l'arrière-plan de la vue ne soit pas animable. J'utilise le travail autour de ce que j'ajoute mon propre fond avec un UIImageView.

Merci pour vos réponses!

Questions connexes