iphone - NSOperation mainQueue 问题

标签 iphone ios uiimage nsoperation nsoperationqueue

我有幻灯片,我想显示大图,我添加到 [NSOperation mainQueue]低优先级的操作,此操作显示图像。

如果图像很小,一切正常,但是当图像大约为 5Mb 时, View 会卡住 1 秒,并且我无法滚动幻灯片。我认为,对于 iPhone 来说显示大图像非常困难,主队列太重载了。

但我不明白,因为我所有的显示代码都是以低优先级操作执行的。

这是显示代码。

[imageView removeFromSuperview];
imageView = nil;

// reset our zoomScale to 1.0 before doing any further calculations
self.zoomScale = 1.0;

// make a new UIImageView for the new image
self.imageView = [[[UIImageView alloc] initWithImage:image] autorelease];
[self addSubview:imageView];

self.contentSize = [image size];
[self setMaxMinZoomScalesForCurrentBounds];
self.zoomScale = self.minimumZoomScale;

也许我可以设置手势识别器的优先级(UIScrollView 的常规问题识别器?)

更新

请看我的新话题,我更恰本地描述了这个问题 my topik

最佳答案

优先级与调度有关。如果您在 runloop 迭代期间排队一堆操作,那么它们将按其在该队列上的优先级执行。

加快此速度的一种解决方案是包含缩放到您正在显示它们的确切大小的资源。如果您尝试在 200x200 区域中显示 2000x2000 像素图像,那么系统会在内存中缩放所有这些东西.您还可以以编程方式动态创建更小的图像以适应图像。这可以在后台队列上完成,因此您的 UI 仍然可以响应。

How to resize the image programmatically in objective-c in iphone

关于iphone - NSOperation mainQueue 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158294/

相关文章:

ios - 获取二进制表达式 ('id' 和 'id' 的无效操作数)和错误的计算值

android - 使用什么类型的小部件可以让用户将 Excel 文件上传到 Flutter 应用程序?

iphone - 如何在 UIImage 中只显示图像的一部分?

iphone - xcode 4.5 GM 上的 ld 警告,

objective-c - 使用 iPhone SDK 设置预约

ios - 为什么只播放 UNNotificationSound 的前 5 秒

iphone - 试图将 jpeg 保存到应用程序的文档目录

iOS:使用谷歌登录

iphone - UIScrollView contentSize 问题 - 带有示例代码

ios - 如何在不进行 NSData 转换的情况下将 url 图像传递给 ios 中的按钮