- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我有一个 IKImageView,我正在将 CGImages(我用 NSImages 制作)放到它上面。然而,一个普通的 200DPI 8.5/11 页面需要大约 3 秒才能出现,一次出现在边长约 2 英寸(屏幕)的矩形中。这真的很烦人。有解决办法吗?
或者,有没有办法对 View 进行双重缓冲?要有 2 个 IKImageViews 并绘制成一个,然后显示它?
预计到达时间:加倍我的 ScrollView (里面有 ikimageviews)然后绘制到它们中,然后取消隐藏它们,似乎没有帮助......或者,也许它有一点帮助,但帮助不大
我用工具做了一些探索,发现在 memcopy 中似乎做了很多工作:
22 commpage [libSystem.B.dylib] 78.0 __memcpy
21 ImageIO 37.0 CGImageReadGetBytesAtOffset
20 ImageIO 37.0 CGImageReadSessionGetBytes
19 ImageIO 37.0 myTIFFReadProc
18 libTIFF.dylib 37.0 TIFFReadRawStrip1
17 libTIFF.dylib 37.0 TIFFFillStrip
16 libTIFF.dylib 37.0 _cg_TIFFReadEncodedStrip
15 ImageIO 37.0 copyImageBlockSetTIFF
14 ImageIO 37.0 ImageProviderCopyImageBlockSetCallback
13 CoreGraphics 37.0 CGImageProviderCopyImageBlockSet
12 CoreGraphics 37.0 img_blocks_create
11 CoreGraphics 37.0 img_blocks_extent
10 CoreGraphics 37.0 img_interpolate_extent
9 CoreGraphics 37.0 img_data_lock
8 CoreGraphics 37.0 CGSImageDataLock
7 libRIP.A.dylib 37.0 ripc_AcquireImage
6 libRIP.A.dylib 37.0 ripc_DrawImage
5 CoreGraphics 37.0 CGContextDrawImage
4 ImageKit 37.0 -[IKImageLayer drawInContext:]
3 QuartzCore 37.0 tiled_layer_render(_CAImageProvider*, unsigned int, unsigned int, unsigned int, unsigned int, void*)
2 QuartzCore 37.0 CAImageProviderThread(void*)
1 libSystem.B.dylib 37.0 _pthread_wqthread
0 libSystem.B.dylib 37.0 start_wqthread
虽然我不确定这告诉我什么......
编辑:郑重声明,问题是不是数据大小。我有一个旧版本的程序,它使用已弃用的 quickdraw 方法调用。当我将图像放大到 300% 时,一个屏幕像素 = 一个图像像素,因此它需要使用整个图像,它仍然会一页一页地压缩。
我被最初写这篇文章的人 mock 了,因为他的版本在他古老的 10.3 G5 上比在我最新的 Intel 机器上运行得更快。速度至少提高 10 倍。
最佳答案
200DPI 8.5/11 page
假设这些是 RGB 颜色,则每张图像有 11.22 兆字节的像素。您的应用程序使用大量内存,绘制 3.74 兆像素(无论颜色空间如何)会很慢。
2 inches (screen) on a side
利用它。使用 72 dpi 常量和 the window's user-space scale factor 计算出 2 英寸是多少屏幕像素,并将您的页面栅格化为该大小。目前,这些矩形的边有 144 个点,144×144 的图像在内存和绘制方面非常高效。
如果您有缩放设置,您会希望在这些图像发生变化时使这些图像的缓存失效,并在不早于您的 View 被告知绘制时重新计算每个图像。
关于objective-c - IKImageView 不稳定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3372450/
我完全被这个问题难住了:我是 Xcode 新手,来自 Windows。我创建一个全新的 Cocoa 应用程序,在 Interface Builder 中放置一个 IKImageView,保存并启动该应
是否有任何方法可以在 IKImageView 中对图像更改进行动画处理(使用提供的核心动画之一),而无需在新图像加载时使用两个独立的 IKImageView? 最佳答案 没有可用的公共(public)
我的窗口中有一个大的 IKImageView。当用户单击某些内容时,图像会发生变化。当更改发生时,IKImageView 首先绘制背景颜色,然后在其顶部绘制图像,这看起来非常糟糕。有没有办法让它切换图
IKImageView 提供了一个“imageCorrection”属性,该属性采用 CIFilter,并且可能在显示图像时使用它。 当我最近尝试使用它时,它对我不起作用。当我将该属性设置为新的 CI
我有 NSSplitView ,两侧都有两个 IKImageView 来相互比较。我正在尝试实现打印功能,但图像在预览时消失。 ( What should be printed 与 What I ge
我想向 IKImageView 添加棋盘背景以查看透明图像。我正在尝试使用消息 setOverlay:forType 将带有棋盘图像的 CALayer 设置为 IKImageView CFURLRef
我有一个 IKImageView,我正在将 CGImages(我用 NSImages 制作)放到它上面。然而,一个普通的 200DPI 8.5/11 页面需要大约 3 秒才能出现,一次出现在边长约 2
我正在尝试使用 apple ( http://developer.apple.com/mac/library/samplecode/IKImageViewDemo/index.html ) 提供的 I
我有一个 IKImageView 和一个 NSImageView 作为 subview 。 subview 应该绘制在其主视图之上。我尝试了具有相同 subview 的 NSImageView ,它工
我有类 Canvas 和另一个自定义 View CanvasItem ,它们都是 NSView 的子类。 CanvasItem 有一个 IKImageView subview 。 Canvas 覆盖
我试图在 IKImageView 中显示来自文件 url 的图像,但它只显示一个空框。我的项目在 Xcode 10.0 上的 Cocoa Swift 4.2 MacOS 中。 我的代码: class
我正在尝试在 IKImageView 上设置来自 NSImage 的图像。我已经使用 NSImage.cgImage 从 NSImage 获取了 CGImage,但是要在 IKImageView 上设
我正在将图像放入 IKImageView,并立即调整其大小以适合。每当我执行此操作时,图像最初显示为 1-1 大小(巨大),然后缩小,如果动画流畅,这会很好。不过,动画看起来……飘飘然?有大块的图像,
我是 ObjC 的新手。提前感谢您的帮助和耐心等待! 我正在尝试将图像添加到我的应用程序中的窗口(这是 OSX,而不是 iOS)。我通过界面生成器向窗口添加了 ImageView (IKImage
通过 NSSlider 在 IKImageView 中设置图像缩放系数的最佳实践是什么? 我能够将 slider 绑定(bind)到 IKImageView 的放大或缩小操作。显然,我更愿意看到的是一
我有一个 Mac 应用程序,它已经在应用程序商店中存在一年左右了。它首次与目标 SDK 10.7 Lion 一起发布。更新到 Mountain Lion 后,它不再起作用。 应用程序在嵌入 NSScr
我正在尝试使用 IKImageView 的选择和复制功能。如果您只想拥有一个带有图像的应用程序,选择一部分并将其复制到剪贴板,这很简单。您将复制菜单选择设置为第一响应者的 copy:(id) 方法,并
我有WebView,我可以在其中加载网络存档的内容。在同一 View 中,我有 IKImageView 导出。将图像从 Web View 拖放到 ImageView 对我来说不起作用。 奇怪的是,当我
我在 Interface Builder 中有一个 IKImageView 并将背景颜色设置为红色,但在应用程序运行时它不起作用,它只是保持灰色。 我使用 Cocoa 应用程序模板在 Xcode 4.
我正在尝试获取与 View 关联的图像,但 Xcode 返回错误。这是代码: @IBOutlet var imageView: IKImageView // Link to the image vie
我是一名优秀的程序员,十分优秀!