анимация изображения/UIView iOS

На домашней странице моего приложения я хочу анимировать PNG-изображение, скользящее в представление, а затем снова скользящее, прежде чем второе изображение появится, а затем исчезнет. Время только для того, чтобы зритель прочитал, прежде чем каждый исчезнет. Я не знаю, как это сделать, и хотел бы получить некоторую информацию? кажется довольно простым, я надеюсь, что это так, и кто-то может указать мне, как это сделать. Я также хочу, чтобы это было в цикле, поэтому всякий раз, когда вы возвращаетесь к экрану, он все равно будет анимироваться.

Любые идеи, пожалуйста? Всего день или около того, чтобы закончить


person holtii    schedule 12.12.2012    source источник


Ответы (3)


Более или менее просто расширяя ответ Тома ван Зуммерена. Этого должно быть достаточно, чтобы понять основную идею.

- (void)viewDidAppear:(BOOL)animated
{
    [super viewDidAppear:animated];

    UIImageView *myImageView = [[UIImageView alloc] initWithFrame:CGRectMake(20, -280, 280, 280)];
    [myImageView setImage:[UIImage imageNamed:@"1.png"]];
    [self.view addSubview:myImageView];

    [UIView animateWithDuration:2.0 delay:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{
        [myImageView setCenter:self.view.center];
    }completion:^(BOOL done){
        [UIView animateWithDuration:2.0 delay:3.0 options:UIViewAnimationOptionCurveEaseIn animations:^{
            [myImageView setCenter:CGPointMake(myImageView.center.x, self.view.bounds.size.height + (myImageView.bounds.size.height / 2))];
        }completion:^(BOOL done){
            [myImageView setFrame:CGRectMake(20, -280, 280, 280)];
            NSLog(@"%@",NSStringFromCGRect(myImageView.frame));
            [myImageView setImage:[UIImage imageNamed:@"2.png"]];
        }];
    }];
}
person Mick MacCallum    schedule 12.12.2012
comment
спасибо, что обрисовано в общих чертах для меня сейчас, и я могу работать над этим ура - person holtii; 12.12.2012
comment
нужно немного поработать, а не по вертикали, как мне получить горизонтально? по экрану, почти то, что я хочу, нужно немного подправить, + сделать так, чтобы изображение не сжималось - person holtii; 12.12.2012
comment
+ второе изображение, не могу появиться... какие-нибудь дополнительные комментарии, пожалуйста? - person holtii; 12.12.2012
comment
Я знаю, но я все еще новичок, где я могу найти информацию из руководств о том, как анимировать изображения... - person holtii; 12.12.2012
comment
@holtii Извините, я не хотел, чтобы это звучало так враждебно. Что вам нужно изучить, так это использование CGRectMake в этом коде. Это то, что говорит о том, где разместить объект на экране. И второе изображение не появляется, потому что не запускается дополнительная анимация. После того, как изображение1 уходит с экрана, этот код сбрасывает его в исходное положение, а затем изменяет изображение в представлении изображения, но никогда не анимирует его обратно на экран. - person Mick MacCallum; 12.12.2012
comment
хорошо, спасибо, я посмотрю на это и попытаюсь понять, спасибо за ответ, тоже отмечу - person holtii; 12.12.2012
comment
что-то вроде отказа, не было времени искать ответы, которые я не могу найти. должен быть простым из кода, который вы предоставили: / если бы у меня было больше времени, я бы продолжил поиск - person holtii; 12.12.2012
comment
не могли бы вы еще немного помочь? Я не могу найти информацию о том, как заставить его пройти, а также добавить второй и сделать его петлей. я просто не знаю :С - person holtii; 12.12.2012

Для этого вы можете использовать Core Animation. Это очень легко сделать. Пример анимации:

UIImageView *imageView = ...;
imageView.frame = CGRectMake(-160, 100, 250, 200);
[UIView animateWithDuration:1.5 animations:^{
    imageView.frame = CGRectMake(160, 100, 250, 200);
}];

Это анимирует UIImageView с координаты x от -160 до 160 за 1,5 секунды.

person Tom van Zummeren    schedule 12.12.2012
comment
Есть ли у вас какая-либо причина для анимации кадра, когда вы не меняете размер представления? Почему бы просто не анимировать свойство center? (Кроме того, это анимация UIView, а не основная анимация) - person David Rönnqvist; 12.12.2012
comment
Центр тоже в порядке. Я не против. И это основная анимация, но с тонким слоем абстракции UIKit поверх нее. - person Tom van Zummeren; 12.12.2012
comment
По этой логике это тоже OpenGL ES :D - person David Rönnqvist; 12.12.2012
comment
Я просто вижу это как сокращенное обозначение реального кода Core Animation, который обычно занимает несколько строк кода. Если вы хотите вызвать эту анимацию UIView, это нормально. Core Animation звучит более круто :P - person Tom van Zummeren; 12.12.2012
comment
по какому параметру идти по экрану? не вертикально.. :/ - person holtii; 12.12.2012
comment
это так: CGRectMake(x, y, ширина, высота), где x горизонтально, а y вертикально - person Tom van Zummeren; 12.12.2012
comment
запутался, у меня есть 1 изображение, которое идет сверху вниз по экрану, но я хочу, чтобы оно проходило, а затем второе изображение, а затем хочу, чтобы оно зацикливалось, возникают проблемы - person holtii; 13.12.2012

//Начальная точка

pImgFlowing.frame = CGRectMake(544, 817, 84, 18);
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:2.0f];
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut];

//Конечная точка

pImgFlowing.frame = CGRectMake(544, 774, 84, 61);
[UIView commitAnimations];
person Ela    schedule 04.07.2014