在没有 CATiledLayer 的 iOS 上呈现和缩放大图像

发布于 2024-12-28 16:41:47 字数 303 浏览 0 评论 0原文

我想在 iPhone 和 iPad 上展示并允许用户缩放大图像,就像照片应用程序的工作方式一样。

我意识到 CATiledLayer 是这个的首选类,但它使用的美学不适用于我的应用程序。它会一个接一个地渲染图块,而“照片”应用程序会立即渲染整个屏幕(并在缩放期间和之后显示像素化版本,直到应用程序可以跟上)。

我当然可以实现一个视图,在每次缩放后在背景中渲染图像。但是,一旦源图像变大,应用程序就会崩溃。因此平铺很有吸引力,我只是希望在所有平铺准备就绪之前不更新屏幕(并同时显示较低分辨率的图像)。

有没有人尝试过实施这样的事情?有什么想法吗?

I'd like to present and allow the user to zoom large images on the iPhone and iPad in much the same way that the Photos app works.

I realize CATiledLayer is the goto class for this, but the aesthetic it uses won't work for my application. It renders tiles one after another, while the Photos app renders the whole screen at once (and shows a pixellated version during and after a zoom until the app can catch up).

I could certainly implement a view which renders the image in the background after each zoom. However, once the source image gets to large, this will crash the app. So tiling is appealing, I would just prefer to not update the screen until all tiles are ready (and show a lower-res image in the meantime).

Has anyone tried to implement something like this? Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

も星光 2025-01-04 16:41:47

Apple 的 PhotoScroller 和 ScrollViewSuite 示例展示了如何执行此操作以及更多操作。

还有一个 2010 年 WWDC 视频,标题为“使用滚动视图设计应用程序”,其中解释了 PhotoScroller。

Apple's PhotoScroller and ScrollViewSuite samples show how to do this and more.

There's also a 2010 WWDC video titled "Designing Apps with Scroll Views" that explains PhotoScroller.

仲春光 2025-01-04 16:41:47

我猜你可以有两个视图:一个具有低分辨率图像的 ImageView,以及顶部具有 CaTiledLayer 的自定义视图,具有透明背景并在开始时隐藏。

因此,当缩放(您需要对两个视图应用缩放)并且需要额外的分辨率时,只需显示 catiledlayered 视图,这样它将加载图块,同时在未加载的图块上显示低分辨率(和像素化)。

I guess you can have two views: one ImageView with a low res image, and on top a custom view with a CaTiledLayer, with transparent background and hidden at the beginning.

So, when zooming (you'll need to apply zoom to both views) and you need extra resolution, just show the catiledlayered view, so it will load tiles while showing the lowres (and pixelated) on not loaded tiles.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文