2.6 开始和关闭繁忙模式

2.6 开始和关闭繁忙模式

还记得当LightWork忙于保存或共享照片时,我们希望显示活动指示符并禁用所有工具栏项。相反,当LightWork不再忙于处理照片时,我们希望隐藏活动指示符并重新启用工具栏项。由于这些操作影响用户界面,我们必须确保它们在应用程序的主线程上运行。

[如果我们的代码是在后台线程上运行的,那么当我们试图显示或隐藏活动指示器时,什么也不会发生。]

为了在特定的线程上运行代码,我们可以向线程的事件队列中添加任务。iOS SDK提供一个C函数dispatch_async,它接受目标队列和block作为参数。另一个C函数dispatch_get_main_queue()允许我们获取主线程的事件队列。让我们在下面的帮助方法中使用这些函数,它启动忙碌模式:

- (void)startBusyMode{
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.activityIndicatorView startAnimating];
        for (UIBarItem *item in self.toolbar.items) {
            item.enabled = NO;
        }
    });
}

类似,以下的帮助函数停止忙碌模式:

- (void)stopBusyMode {
    dispatch_async(dispatch_get_main_queue(), ^{
        [self.activityIndicatorView stopAnimating];
        for (UIBarItem *item in self.toolbar.items) {
            item.enabled = YES;
        }
    });
}

###返回到书籍目录###
###返回到第二章目录###

猜你喜欢

转载自blog.csdn.net/GikkiAres/article/details/85316997