开发者

Animations not starting directly after method call

开发者 https://www.devze.com 2023-03-15 07:26 出处:网络
In my app delegate I perform my updateData method using performSelecorInBackground:withObject. At the end, a notification is posted which tells an observer in my tableview to reload the data.

In my app delegate I perform my updateData method using performSelecorInBackground:withObject. At the end, a notification is posted which tells an observer in my tableview to reload the data.

My problem is with the animations: using the code below, my animations start at the end of the method and not directly after performSelector.

Does this have something to do with backgrounding the selector or is there something else I'm not seeing?

Any help would be greatly appreciated.

Thanks!

- (void) updateData: (NSString *)newVersionNumber {


    ... CODE ...


    UIView *update = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 360, 20)];
    update.backgroundColor = [UIColor blackColor];
    [self.navController.view addSubview:update];

    [self performSelector:@selector(updateDownAnimation) withObject:nil];


    ... CODE ...


    [[NSNotificationCenter defaultCenter] p开发者_如何学JAVAostNotificationName:@"tableviewShouldReload" object:nil];


    ... CODE ...

    [self performSelector:@selector(updateUpAnimation) withObject:nil];

}

- (void) updateDownAnimation {


    [UIView animateWithDuration:0.3 animations:^{
        _window.frame = CGRectOffset(_window.frame, 0, 20);

    }];

}


It is not advisable to do UIKit stuff on secondary threads. You might want to change that to

[self performSelectorOnMainThread:@selector(updateUpAnimation)
                       withObject:nil
                    waitUntilDone:YES];
0

精彩评论

暂无评论...
验证码 换一张
取 消