Переместить изображение слева направо - PullRequest
0 голосов
/ 12 мая 2011

В моем приложении после загрузки просмотра изображение должно отображаться слева направо.Я пишу этот код в viewdidload или viewwillappear:

       UIImage *image = [UIImage imageNamed:@"PG05(REV).jpg"];
       UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
       for (int i=-1024; i<=0; i++) {
               NSLog(@"i: %d",i);
       sleep(5);
       imageView.frame = CGRectMake(i,0, 1024, 768);
               NSLog(@"done");
       [self.view addSubview:imageView];

       }
       [imageView release];

Но проблема в том, что перед загрузкой представления он выполняет приведенный выше код, чем загружает представление, так что кажется, что представление загружено истатичное изображение там.Но мое требование состоит в том, чтобы сначала полностью загрузился вид, затем изображение должно отображаться слева направо.

Пожалуйста, помогите мне.

Ответы [ 4 ]

2 голосов
/ 12 мая 2011

Прежде всего, вы не должны вызывать - (void) addSubview: внутри вашего цикла for. Вам просто нужно позвонить один раз. Во-вторых, если вы хотите анимировать ваш imageView слева направо, UIView класс предоставляет отличные функциональные возможности для этого, используя блоки.

Ваш код должен выглядеть следующим образом:

UIImage *image = [UIImage imageNamed:@"PG05(REV).jpg"];
UIImageView *imageView = [[UIImageView alloc] initWithImage:image];
imageView.frame = CGRectMake(-1024, 0, 1024, 768);
[self.view addSubview:imageView];
[imageView release]; //Your imageView is now retained by self.view

//Animation
[UIView animateWithDuration:2.0
                 animations:^(void) {
                    imageView.frame = CGRectMake(0, 0, 1024, 768);
                 }];

Метод animateWithDuration: будет обрабатывать для вас таймер анимации, просто установите аргумент продолжительности в соответствии с вашими потребностями.

0 голосов
/ 12 мая 2011

Это работа для анимации UIView.

Положите свой imageView вниз на -1024 влево, затем перейдите:

[imageView animateWithDuration:5 animations:^{
    [imageView.frame = CGRectMake(0,0, 1024, 768)];
}];

Та-да!Пятисекундная анимация вашего изображения, скользящая вправо.

Ознакомьтесь с методами анимации UIView (из которых UIImageView является подклассом): http://developer.apple.com/library/ios/#documentation/uikit/reference/UIView_Class/UIView/UIView.html

0 голосов
/ 12 мая 2011

Вы не должны делать addSubView: более одного раза, до цикла. Кроме того, вы должны использовать анимацию для этого, а не цикл сна.

Пример:

imageView.frame = CGRectMake(-1024,0, 1024, 768);
[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration: 5];
imageView.frame = CGRectMake(0,0, 1024, 768);
[UIView commitAnimations];
0 голосов
/ 12 мая 2011

Вы можете использовать функцию и вызывать ее, используя метод таймера.

timer = [NSTimer scheduledTimerWithTimeInterval:2.0 target:self selector:@selector(moveImage) userInfo:nil repeats:NO];

-(void)moveImage
{
//Your condition
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...