动画没有延迟?

Posted

技术标签:

【中文标题】动画没有延迟?【英文标题】:Animate without lag? 【发布时间】:2013-04-28 22:34:33 【问题描述】:

我目前正在使用以下代码为视图之间的过渡设置动画,当在此过程中调用refreshTheServers 方法时,整个应用程序会冻结,刷新服务器,然后显示视图。

我怎样才能使这个过程成为一个无缝的过程,其中视图加载然后刷新服务器?

[UIView beginAnimations:nil context:nil];
[UIView setAnimationDuration:0.5];
[UIView setAnimationTransition:UIViewAnimationTransitionCurlUp forView:self.view cache:NO];
[self.view addSubview:self.folderView];
[UIView commitAnimations];
[self refreshTheServers];

编辑:这是我的 refreshTheServers 方法的代码:

- (void)refreshTheServers 

KeychainItemWrapper* keychain = [[KeychainItemWrapper alloc] initWithIdentifier:@"KeychainTest" accessGroup:nil];

NSString *userForConnect = [NSString stringWithFormat:@"%@", [keychain objectForKey:(__bridge id)(kSecAttrAccount)]];
NSString *passForConnect = [NSString stringWithFormat:@"%@", [keychain objectForKey:(__bridge id)(kSecValueData)]];



CTCoreAccount *account = [[CTCoreAccount alloc] init];

dispatch_queue_t taskQ = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);

dispatch_async(taskQ, ^
    [account connectToServer:[[NSUserDefaults standardUserDefaults]
                              stringForKey:@"server"]
                        port:993
              connectionType:CTConnectionTypeTLS
                    authType:CTImapAuthTypePlain
                       login:userForConnect
                    password:passForConnect];

    dispatch_async(dispatch_get_main_queue(), ^
        // ... the thread is over, do stuff on the main thread ...

        CTCoreFolder *inbox = [account folderWithPath:theAppDelegate.folder];

        NSArray *inboxMessages = [inbox messagesFromUID:1 to:0 withFetchAttributes:CTFetchAttrEnvelope];

        [[self allMessages] removeAllObjects];
        [[self allMessages] addObjectsFromArray:inboxMessages];

        [self.messagesTable reloadData];
    );
);

我做错了什么?

【问题讨论】:

【参考方案1】:

以下调用是同步的: [inbox messagesFromUID:1 to:0 withFetchAttributes:CTFetchAttrEnvelope]; 这就是应用程序冻结的原因。 Instruments CPU 采样器可以突出这一点。

【讨论】:

知道我可以用什么代替它吗?每当我重新加载服务器时,它确实会导致问题。

以上是关于动画没有延迟?的主要内容,如果未能解决你的问题,请参考以下文章

UIKeyboardWillHideNotification 动画延迟

如何消除 animateKeyframes 动画开始和结束的延迟 - Swift UIKit

iOS键盘扩展中屏幕左侧的动画延迟

角度延迟加载会破坏骨架加载动画

自动为li添加动画延迟

延迟网站页面的执行