- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我只想预渲染不同的图像以便快速访问。我在这里使用 grand central dispatch 来执行不同的 block 。
启动队列后,我想在完成后设置第一张图像。不幸的是,使用下面的当前代码,只有在渲染完所有图像后才会显示第一张图像。
那么我该如何修改代码呢?每张图片完成后是否有可能获得代表?
代码如下:
// Async prerendering
for (int i = 0; i < count; i++) {
dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_LOW, 0), ^{
dispatch_async(dispatch_get_main_queue(), ^{
UIImage* finalImage = [self prerenderImageForIndex:i];
[self.imageArray addObject:finalImage];
// TODO: i want to display the first image.
// rendering goes on in the background
if (i==0 && [self.imageArray objectAtIndex:0] != nil ) {
self.image = [self.imageArray objectAtIndex:0];
}
});
});
}
更新:
-(UIImage*) prerenderImageForIndex:(int)frame {
UIGraphicsBeginImageContextWithOptions(CGSizeMake(self.frame.size.width, self.frame.size.height), NO, 0);
for (int i=0; i< [configurationArray count]; i++) {
//... get the layerName
UIImage* layerImage = [UIImage imageWithContentsOfFile:[[NSBundle mainBundle] pathForResource:layerName ofType:@"png"]];
// draw layer with blendmode and alpha
[layerImage drawInRect:CGRectMake(x, y, layerImage.size.width, layerImage.size.height)
blendMode:layerblendmode
alpha: layeralpha];
}
// Get current context as an UIImage
UIImage* finalImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return finalImage;
}
我只想知道如何取消/停止或重新启动正在运行的队列?那可能吗?感谢您的帮助。
最佳答案
你必须使用串行队列,例如执行 FIFO:
dispatch_queue_t queue;
queue = dispatch_queue_create("myImageQueue", NULL);
for(int i = 0; i<count; i++) {
dispatch_async(queue, ^{
// do your stuff in the right order
});
}
关于iphone - Grand Central Dispatch - 加载时显示第一张图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10450923/
我正在研究 CSS3 转换。我希望我的问题不会太菜鸟和现实 :) 基本上,每当用户将鼠标悬停在某些元素上时,我都会通过 css 更改文本的颜色。 现在我遇到的问题是:我有一个带有产品名称的 div 框
我想使用 javascript/jquery 获取 #mainChildElement 相对于 .grand-grand-grand-parent 的位置。我尝试执行 $('#mainChildEle
我想使用 flex“系统”来获得看起来像如下图所示,但我的布局 div 和 flex 之间有一些生成的指令: [flex=66]
我正在使用 Lucida Grande 字体系列,它工作得很好。 FontLabel *label4 = [[FontLabel alloc] initWithFrame:CGRectMake(10,
我在解码(孙)子表的元素时遇到问题。这是传入数据的结构: 1 1 text/html theFile.txt
我一直在看this question尝试解决我的问题 here . tl;dr 是我想使用 GCD 让我在执行某些任务时显示“等待”屏幕,然后在完成后隐藏屏幕。现在,我有 - (void) doStu
只要包含 Rect 默认构造函数,我就有以下代码可以正常运行。但是,如果我将其注释掉,希望它会“跳到”Shape 默认构造函数,但它无法编译。 #include class Shape { publ
我有一个关于 SOR(连续过度松弛)的问题。我知道 SOR 可以描述为 N*N 网格,您在网格上执行 n 次迭代,并且可以报告执行时间。该基准测试有一个迭代外循环和两个内循环。内循环用于更新网格的每个
我在 wordpress 中设计了一个模板,现在我正在用 css/html 编写它,但浏览器似乎没有使用我的字体。 Photoshop: 浏览器: 这是我的CSS h1 { font-size: 34
在尝试查找用 C 编写的某些进程应用程序的所有根,并调用我所做的自定义系统调用时,该调用返回一个包含所有进程的数组使用 task_struct* 的信息,我发现任务 swapper/0 是通过父指针指
我们正在通过本地代理服务器播放媒体。在新的 Samsung Grand 设备出现之前,一切都很好。在该特定设备中,我们收到如下 Socket 异常: 4-04 17:55:35.646: W/Syst
GCD 允许根据 4 个全局优先级队列(高、默认、低、背景)将 block 分派(dispatch)到队列。 我的应用程序中有几个 NSOperationQueues,但希望以不同的优先级运行每个。据
长值参数在 dispatch_semaphore_create 中表示什么? dispatch_semaphore_create(long value) 我在文档中没有看到这一点,只有它与零参数一起使
给定以下代码片段: #import @interface DispatchTests : XCTestCase { dispatch_queue_t _workQueue; disp
有谁知道关于 Apple 即将推出的“Grand Central”技术(在 Snow Leopard 中)的任何好的网站,以及它与来自 Microsoft 的 Parallel Extensions(
documentation for dispatch_semaphore_wait说它“以 FIFO 顺序等待信号”。但在这个例子中似乎没有——有人可以解释一下吗? 示例: #include #in
在名为“报告”的事件工作表中,我有 2 列 I 和 F。 它具有包含文本“总计”的重复单元格。 如果它自动包含总计,我想删除整行。 VBA 代码会很好。 最佳答案 使用以下VBA代码,您可以快速删除具
我正在尝试了解队列类型之间的差异。据我了解,有 3 种类型: 全局队列 - 并发 - block 无论顺序如何都会尽快执行 主队列 - 串行 - block 在提交时执行 私有(private)队列
假设当应用程序进入暂停模式时,我正在运行一个GDC线程。会发生什么?胎面会停止还是继续运行?还是我必须自己停止它,在这种情况下如何完成? 谢谢指教! 最佳答案 Background State & N
我正在使用我为 GCD 找到的一个相当不错的教程,它向您展示了如何声明一个新的调度队列。 Grand Central Dispatch operates using queues. Queues ar
我是一名优秀的程序员,十分优秀!