Основная анимация для UIView.frame - PullRequest
2 голосов
/ 18 июля 2011

Я пытаюсь сделать простую анимацию перемещения кадра двух видов. По сути, скрываете объявление, пока оно не загружено, а затем переместите рамку вверх снизу, вместе с видом, который начинается снизу, а затем будет двигаться вверх также, когда объявление поднимает его. Начальная и конечная позиции правильные, но я не вижу, чтобы это было анимировано. Это правильно? Спасибо.

CAKeyframeAnimation *animation = [CAKeyframeAnimation animationWithKeyPath:@"frame"];
    animation.duration = 1.0;

    CGRect adFrame = CGRectMake(self.adBanner.frame.origin.x, self.adBanner.frame.origin.y - self.adBanner.frame.size.height, self.adBanner.frame.size.width, self.adBanner.frame.size.height);
    self.adBanner.frame = adFrame;
    [self.adBanner.layer addAnimation:animation forKey:@"frame"];

    CGRect buttonViewFrame = CGRectMake(self.ButtonView.frame.origin.x, self.adBanner.frame.origin.y - self.adBanner.frame.size.height, self.ButtonView.frame.size.width, self.ButtonView.frame.size.height);
    self.ButtonView.frame = buttonViewFrame;
    [self.ButtonView.layer addAnimation:animation forKey:@"frame"];

Ответы [ 2 ]

12 голосов
/ 18 июля 2011

Для чего-то столь простого, как это, вам не нужно напрямую использовать Core Animation - встроенной системы анимации UIView должно быть достаточно.

[UIView animateWithDuration:1.0 animations:^{
    self.adBanner.frame = adFrame;
    self.ButtonView.frame = buttonViewFrame;
}];

или, если вы ориентируетесь на iOS до версии 4.0,

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:1.0];
    self.adBanner.frame = adFrame;
    self.ButtonView.frame = buttonViewFrame;
[UIView commitAnimations];
1 голос
/ 31 января 2012
[UIView beginAnimations : @"Display notif" context:nil];

[UIView setAnimationDuration:1];

[UIView setAnimationBeginsFromCurrentState:FALSE];

CGRect frame = mainView.frame;

frame.size.height -= 40;

frame.origin.y += 40;

mainView.frame = frame;

[UIView commitAnimations];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...