iPhone загрузка вид "эффект слайда" - PullRequest
4 голосов
/ 03 ноября 2011

Я бы хотел, чтобы, когда вы запрашивали что-то в моем приложении (например, нажатие кнопки или что-то еще), я хотел, чтобы оно отображалось в виде маленького прямоугольника с надписью «загрузка ...», и после завершения загрузки оно исчезает с «». эффект сдвига ». Я сделал простые макеты для описания того, чего я пытаюсь достичь. У вас есть подсказка для меня? Спасибо.

enter image description here

ПРИМЕЧАНИЕ: Я не хочу, чтобы эффект обновления обновлялся (окно загрузки отображается без прокрутки экрана, например, при отправке комментария)

UPDATE:

Я пробовал код Cirrostratus:

- (IBAction)displayLoadingScreen:(id)sender
{
    NSLog(@"pressed");
    UIView *loadingView = [[UIView alloc] init];
    loadingView.frame = CGRectMake(0,-40,320,40);
    [loadingView setBackgroundColor:[UIColor blueColor]];
    [self.view addSubview:loadingView];
    //animate in within some method called when loading starts
    [UIView animateWithDuration:1.0
                     animations:^{ 
                         loadingView.frame = CGRectMake(0,0,320,40);
                     } 
                     completion:^(BOOL finished) {
                     }];
    for (int i = 0; i < 10000; i++) {
        NSLog(@"%d", i);
    }
    //animate out within some method called when loading ends
    [UIView animateWithDuration:1.0
                     animations:^{ 
                         loadingView.frame = CGRectMake(0,-40,320,40);
                     } 
                     completion:^(BOOL finished){


                     }];
}

Почему представление загрузки загружается в после цикла for? Если вы попробуете это, то перед тем, как он напечатает цикл for и после, выполнит две анимации. Идеи?

ОБНОВЛЕНИЕ 2

- (void)stopLoading {
    [UIView animateWithDuration:1.0
                     animations:^{ 
                         loadingView.frame = CGRectMake(0,-40,320,40);
                     } 
                     completion:^(BOOL finished){
                     }];
}

- (void)startLoading {
    loadingView.frame = CGRectMake(0,-40,320,40);
    [loadingView setBackgroundColor:[UIColor blueColor]];
    [self.view addSubview:loadingView];
    //animate in within some method called when loading starts
    [UIView animateWithDuration:1.0
                     animations:^{ 
                         loadingView.frame = CGRectMake(0,0,320,40);
                     } 
                     completion:^(BOOL finished) {
                     }];
    sleep(5);
    [self stopLoading];
}

- (IBAction)displayLoadingScreen:(id)sender
{
    NSLog(@"button pressed");
    [self startLoading];
}

Ответы [ 3 ]

5 голосов
/ 03 ноября 2011
loadingView.frame = CGRectMake(0,-40,320,40);
[loadingView setBackgroundColor:[UIColor blueColor]];
[self.view addSubview:loadingView];
//animate in within some method called when loading starts
[UIView animateWithDuration:1.0
                 animations:^{ 
                     loadingView.frame = CGRectMake(0,0,320,40);
                 } 
                 completion:^(BOOL finished){


                 }];
//animate out within some method called when loading ends
[UIView animateWithDuration:1.0
                 animations:^{ 
                     loadingView.frame = CGRectMake(0,-40,320,40);
                 } 
                 completion:^(BOOL finished){


                 }];
1 голос
/ 03 ноября 2011

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

Затем, когда загрузка будет завершена (используйте уведомление или просто вызовите функцию представления), сдвиньте ее с анимацией такого типа:

[UIView animateWithDuration:0.3
                              delay:0
                            options:UIViewAnimationOptionAllowUserInteraction
                         animations:^{
                             //change the frame to make the view go out of the screen
                         }
                         completion:^(BOOL finished){
                             //do whatever you want with the view (release it for instance)
                         }];
0 голосов
/ 03 ноября 2011

вы можете сделать это с помощью вращателя, иначе вы просто берете вид и устанавливаете анимацию с его координатой, когда вы нажимаете на любой объект, он появляется в вашем виде, и после завершения загрузки вы должны установить '-' координату ( кадр) для вашего всплывающего окна, хоп это будет вас ...... ...... 1001 *

...