анимация addSubview - PullRequest
       12

анимация addSubview

56 голосов
/ 25 февраля 2010

У меня есть основной UIView, где я отображаю разные данные. Затем я помещаю кнопку, которая отображает подпредставление так:

- (IBAction) buttonClicked:(id)sender
{
    UIView *newView = [[UIView alloc] initWithFrame:CGRectMake(25,25,50,20)];
    UILabel *newLabel = [[UILabel alloc] initWithFrame:CGRectMake(25,25,50,25)];
    newLabel.text = @"some text";
    [newView addSubview:newLabel];

    [self.view addSubview:newView];
    [newLabel release];
    [newView release];
}

newView выглядит нормально, но он никак не оживляет себя, просто появляется сразу. Как добавить анимацию при появлении newView? Как масштабирование или скольжение вниз или что-то в этом роде. Есть какой-нибудь простой код?

Ответы [ 5 ]

83 голосов
/ 19 декабря 2011
[UIView transitionWithView:containerView duration:0.5
        options:UIViewAnimationOptionTransitionCurlUp //change to whatever animation you like
        animations:^ { [containerView addSubview:subview]; }
        completion:nil];
79 голосов
/ 25 февраля 2010

Привет. Вы можете использовать анимацию UIView:

[newView setFrame:CGRectMake( 0.0f, 480.0f, 320.0f, 480.0f)]; //notice this is OFF screen!
[UIView beginAnimations:@"animateTableView" context:nil];
[UIView setAnimationDuration:0.4];
[newView setFrame:CGRectMake( 0.0f, 0.0f, 320.0f, 480.0f)]; //notice this is ON screen!
[UIView commitAnimations];

SDK теперь выяснит это для вас и оживит представление позиций, которые вы ему дали. Это работает для большинства свойств UIViews: альфа, масштаб, границы, рамки и т. Д.

Существуют также встроенные анимации, такие как flip и curl:

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
[UIView setAnimationTransition:UIViewAnimationTransitionFlipFromRight
                           forView:newView
                            cache:YES];

[self.navigationController.view addSubview:settingsView.view];
[UIView commitAnimations];

Надеюсь, это поможет вам начать:)

23 голосов
/ 17 ноября 2011

ссылка на платформу QuarzCore

#import <QuartzCore/QuartzCore.h>

CATransition *transition = [CATransition animation];
transition.duration = 1.0;
transition.type = kCATransitionPush; //choose your animation
[newView.layer addAnimation:transition forKey:nil];
[self.view addSubview:newView]; 
20 голосов
/ 25 сентября 2015

Давайте сделаем это в кратчайшие сроки.

var redView = UIView(frame:CGRectMake(20,20,100,100))
redView.backgroundColor = UIColor.redColor
redView.alpha = 0.0
view.addSubview(redView)

UIView.animateWithDuration(0.25) { () -> Void in
    redView.alpha = 1.0
}

Добавление подпредставления нельзя анимировать, просто поместив его в блок animateWithDuration. И это не может быть анимировано с помощью скрытого.

20 голосов
/ 19 октября 2013

Я обнаружил, что даже с анимационными блоками и опциями, попытка анимировать addSubview сама по себе ничего не сделает для меня. Я нашел обходной путь, который состоит в том, чтобы установить альфу подпредставления на 0,0, добавить подпредставление и затем анимировать настройку альфа-канала от 0,0 до 1,0. Это дает мне эффект затухания, который я искал.

Надеюсь, это поможет кому-то еще.

UIView *redView = [[UIView alloc] initWithFrame:CGRectMake(20, 20, 100, 100)];
redView.backgroundColor = [UIColor redColor];
redView.alpha = 0.0;

[self.view addSubview:redView];

[UIView animateWithDuration:0.5 animations:^{
  redView.alpha = 1.0;
}];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...