2 votes

Cachez toutes les vues contenant une UiView en donnant une hauteur de 0 à l'UiView parent.

Je suis en train de faire une animation et dans celle-ci je dois faire une hauteur de 0 d'un UIView nommé " Sous-vue ". maintenant que la sous-vue contient une UIButton y UIImageView . Maintenant, je fais la hauteur 0 par cette méthode sur le clic du bouton.

@interface ViewController : UIViewController
{
    IBOutlet UIView *suvView;
    IBOutlet UIButton *subButton;
    IBOutlet UIImageView *imgview;
}
-(IBAction)hide:(id)sender;
@end

@implementation ViewController

- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view, typically from a nib.
    [self.view addSubview:suvView];
    [suvView addSubview:subButton];
    [suvView addSubview:imgview];
}

-(IBAction)hide:(id)sender
{
    [UIView beginAnimations:nil context:suvView];
    [UIView setAnimationDuration:0.25];
    [suvView setFrame:CGRectMake(0, 94, 320, 0)];
    [UIView commitAnimations];
}
@end

Mais lorsque la hauteur est de 0, les vues nommées "subButton" et "imgview" restent telles quelles. Je veux que Them soit caché lorsque la hauteur de la subView est de 0.

J'utilise XCode 4.5

6voto

Jonathan Cichon Points 3525

Si vous voulez les cacher sans les redimensionner : [mainview setClipsToBounds:YES]

0voto

IronManGill Points 5855

Vous avez deux méthodes pour y parvenir :-

Tout d'abord, si vous faites en sorte que la hauteur des suvViews soit de 0, vous n'avez pas besoin de la supprimer. Mais il suffit de cacher l'imgview et le subButton comme suit

-(IBAction)hide:(id)sender
{
    [UIView beginAnimations:nil context:suvView];
    [UIView setAnimationDuration:0.25];
    [suvView setFrame:CGRectMake(0, 94, 320, 0)];
    [UIView commitAnimations];
    subButton.hidden = YES;
    imgview.hidden = YES;
}
@end

Vous pouvez également réduire la hauteur de subButton et de imgview à la hauteur de suvView comme suit

-(IBAction)hide:(id)sender
{
    [UIView beginAnimations:nil context:suvView];
    [UIView setAnimationDuration:0.25];
    [suvView setFrame:CGRectMake(0, 94, 320, 0)];
    [imgview setFrame:CGRectMake(0, x, y, z];
    [subButton setFrame:CGRectMake(0, x, y, z];
    [UIView commitAnimations];
}

où x, y, z sont les coordonnées de l'image et du sous-bouton. J'espère que cela vous aidera.

0voto

Rakesh Points 2218

Ajoutez la ligne suivante avant de lancer l'animation :

subButton.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;
imgView.autoresizingMask = UIViewAutoresizingFlexibleWidth|UIViewAutoresizingFlexibleHeight;

Vous pouvez également le faire à partir du constructeur d'interface en définissant les dimensions verticales et horizontales de chaque sous-affichage (bouton et image).

En fait, vous devriez utiliser l'animation par blocs recommandée par Apple (si vous utilisez iOS 4.0 et plus) plutôt que la méthode suivante beginAnimations: y commitAnimations: .

0voto

NANNAV Points 2587
//try this code for view animation

-(IBAction)hide:(id)sender
{
[UIView animateWithDuration:2.0 delay:0.0 options:UIViewAnimationCurveEaseOut
                 animations:^{
    [suvView setFrame:CGRectMake(0, 94, 320, 0)];
 }
  completion:nil];
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X