问题标签 [catiledlayer]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
402 浏览

ios - 摆脱 PhotoScroller 中的白色瓷砖边框

Apple 有一个名为 PhotoScroller 的 iOS 示例应用程序,它演示CATiledLayerUIScrollViewer. 示例应用程序在每个图块周围显示白色框,作为说明图块的一种方式(即,当您放大时,图块代表图像的较小部分)。

我怎样才能摆脱这些白线?我已经查看了代码,但无法弄清楚它们来自哪里。(我是 iOS 和 Objective-C 的新手,所以这可能很明显。)

0 投票
1 回答
1346 浏览

iphone - ZoomingPDFViewer 苹果示例

我正在尝试了解 Apple 的 ZoomingPDFViewer 示例代码。以下是我对它在我脑海中如何运作的理解中的一些问题。我不确定我是否理解正确。他们的代码链接位于:http: //developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html

(1) CATiledLayer 用于表示不同缩放级别的PDF。我假设这就是这个类用于查看类参考的内容。除了这个类之外,你还会使用其他东西来实现缩放功能吗?

(2) 在 TiledPDFView 的 initWithFrame 中,他们这样做:tiledLayer.tileSize = CGSizeMake(512.0, 512.0); tileSize 是构成整个图像的图块吗?如果是这样,为什么这么大的尺寸?

(3) oldPDFView 和 pdfView 是如何工作的?就像在变焦的不同阶段哪个在前面,它们什么时候被换掉。我很难理解逻辑的流程。谢谢。

0 投票
2 回答
749 浏览

iphone - 有没有更好的方法在 iphone 中平铺图像

目前,尝试通过 URL 下载图像并以 Apple 商店的 PhotoScroller 应用程序的方式平铺这些图像。最大图像尺寸为 4000 * 4000,为 RGB 格式。我正在使用 256 * 256 的 tilesize 平铺这些图像。平铺图像并将文件写入磁盘需要很长时间。如果可以平铺文件并在 iphone 上加载,则正在寻找更好的方法。总共 4 个 URL 调用,每个 URL 调用获取图像并通过平铺过程并调用 PhotoScroller 应用程序以在 iphone 上启动这些图像。

如果有人遇到过此类问题并对此有所了解,您能否分享一些想法。

0 投票
0 回答
868 浏览

iphone - PDF 和缩放 - CATiledLayer

我有一个问题,我不是程序员,但我尝试做一些有趣的应用程序。我尝试创建一个 pdf 查看器,我创建了一个 UIView 类,如下所示:

现在我尝试添加缩放但没有运气,从缩放我创建了一个图层:

编辑:缩放工作,我使用 shouldAutorotateToInterfaceOrientation 是问题(我需要重写一些代码),现在它可以工作但是当我缩放质量恶化时。:(

0 投票
1 回答
411 浏览

ios - 渲染非常大的 UIscrollview UIImage + Video

我正在我的应用程序上创建一个特定的功能,但我不知道最好的方法是什么。

我有一个UIScrollview大屏幕(1024*748)。在这个里面UIScrollView我插入一个UIView. 这个视图很大(8000*748),代表一个表格。在这张桌子上,我插入UIImageView了一些不同的视频。我将此视图呈现给适合滚动视图的用户,然后用户可以通过捏合来缩放并详细查看视频和图像。

我尝试了两种不同的方法:

  1. 在第一种方法中,我UIScrollView异步加载所有内容,加载后我将其呈现给用户并将缩放级别设置为 0.4。

  2. 然后我尝试使用CATiledLayer与谷歌地图应用程序相同的行为,但在插入视频时遇到了困难。

谁能告诉我最好的方法是什么?

0 投票
1 回答
368 浏览

uiview - CATiledLayer 重绘底层子视图

我有两个子类 UIView 作为 UIViewController 视图的子视图。第一个 UIView 将 CATiledLayer 作为图层类。并将其置于背景上。第二个 UIView 首先放在上面。我想用 CATiledLayer 重绘 UIView。我尝试调用 [myView.layer setNeedsDisplay] 但它不起作用。

0 投票
1 回答
539 浏览

iphone - 在 CATiledLayer 上添加 UIImage

是否可以在 CATiledLayer 上绘制 UIImage。主要思想是注意视图上的位置。我使用了 Apple Library 中的 PhotoScroller 示例,我正在尝试在 tileRect 顶部添加一个 UIImage。任何帮助将不胜感激。

0 投票
5 回答
3913 浏览

iphone - 在 UIScrollView 中为 zoomScale 设置动画时不需要的滚动

执行摘要: 有时UIScrollView会对 的值进行不必要的更改contentOffset,从而导致应用程序在正在查看的文档中显示错误的位置。不需要的更改与滚动视图的zoomScale.

详细信息:CATiledLayer在使用UIScrollView. CATiledLayer保存一个pdf,当在contentOffset一定范围内时,当我缩小时,contentOffset在缩放发生之前改变了(这就是错误)。contentOffset似乎在 Apple 的代码中有所更改。

为了说明这个问题,我修改了 Apple 的示例应用程序 ZoomingPDFViewer。代码在github上:https ://github.com/DirkMaas/ZoomingPDFViewer-bug

点击将导致zoomScale更改为 0.5,使用animateWithDuration,从而缩小。如果UIScrollView'scontentOffset.y小于 2700 或大于 5900,则zoomScale动画效果很好。如果点击发生contentOffset.y在这两个值之间,contentOffset.y则将跳转(未动画)到大约 2700,然后zoomScale会发生动画,但会同时发生滚动,因此当动画完成时,contentOffset.y就是它所在的位置应该。但跳跃从何而来?

例如,contentOffset.y点击屏幕时假设是 2000:zoomScale动画效果很好;contentOffset.y没有改变。

但是如果在contentOffset.y点击屏幕时是 4000:contentOffset.y将在没有动画的情况下跳转到大约 2700,然后缩放和滚动将从该点开始并同时发生。动画完成后,看起来好像我们从 4000 直接放大,所以我们最终在正确的位置,但行为是错误的。

关于 UI 的说明:

  • 文本可以以正常方式垂直滚动
  • 可以通过正常方式捏合来放大和缩小文本
  • 单击一下将导致zoomScale设置为 0.5;变化是动画的

我注意到如果zoomScale大于 0.5,则跳跃不是那么大。另外,如果我使用setZoomScale:animated:而不是animateWithDuration,错误就会消失,但我不能使用它,因为我需要链接动画。

这是我所做的总结(github中的代码包括这些更改):

  • 从http://developer.apple.com/library/ios/#samplecode/ZoomingPDFViewer/Introduction/Intro.html下载 ZoomingPDFViewer 并在 XCode 中打开
  • 更改构建设置 | 架构 | Base SDK 到最新的 iOS (iOS 4.3) 更改了构建设置 | GCC 4.2 - 语言 | 根据 Objective-C++ 编译源代码
  • 从项目中删除了 TestPage.pdf
  • 将“whoiam 5 24 cropped 3-2.pdf”添加到项目中
  • 添加PDFScrollView *scrollView;ZoomingPDFViewerViewController课堂
  • 改为初始化loadView而不是ZoomingPDFViewerViewControllerscrollViewsv
  • 添加到PDFScrollview.m中viewDidLoad_handleTapFrom:recognizerzoomOutZoomingPDFViewerViewController
  • 注释掉了scrollViewDidEndZooming:withView:atScalescrollViewWillBeginZooming:withView:因为他们在图像背景中做的事情分散了手头的问题

非常感谢您对我的包容,以及任何和所有的帮助!

0 投票
1 回答
1388 浏览

iphone - 在 UIScrollView 中缩放和滚动大图像

我已经被困在这很长一段时间了。我查看了许多其他答案以及 Apple 的示例。

我想知道的是如何在 UIScrollView 中加载大图像,并能够对它们进行分页并放大它们,例如 Photos 应用程序。

我正在开发一个需要滚动浏览大图像的应用程序(大,我的意思是大于 1024 x 1024 的图像)。我已经实现了与照片应用程序类似的功能。但是,现在我使用的是大图像,我会收到内存警告和其他东西。我知道为什么我会收到警告,并且我知道我需要Tile the images

Apple 的示例演示了使用已经存在的小图像进行平铺。我的应用程序将下载多个图像,将它们保存在磁盘上,用户稍后将能够查看它们。因此,我无法使用其他程序剪切图像。

我需要一些可以平铺全尺寸图像的东西。任何帮助将不胜感激。此外,正如我之前提到的,我知道我必须对 Tiling 做一些事情。但是,我对此并不陌生,如果答案包含一些示例代码,我将不胜感激,我可以将其用作起点。

我查看了其他问题,似乎没有一个问题得到我满意的回答,因此,我再次问这个问题。

再次感谢!

0 投票
1 回答
797 浏览

iphone - CATiledLayer 如何知道何时提供新图块?

由于各种原因,我正在考虑自己实现 CATiledLayer。我做了一些调查,但我似乎无法弄清楚 CATiledLayer 如何知道要提供哪个图块。例如,当您滚动图层时,永远不会调用 setPosition: 或 setBounds:。看起来后台线程只是在没有任何触发器的情况下突然调用了委托的 drawLayer:inContext:。我发现 CATiledLayer 使用“CAImageProvider”的实例调用 setContent:,并且对 drawLayer:inContext: 的所有调用都来自该类。因此,这可能是确定要绘制什么图块的关键。但我找不到关于该课程的任何文档。

那么......有人知道这是如何工作的,以及我如何能够覆盖它吗?

至于CATiledLayer的缺点:

  • 它总是使用屏幕分辨率(或 x2、x4 等);您不能将其设置为源图像的原始分辨率
  • 您不能指定除 2 以外的任何其他比例因子
  • 您必须指定levelsOfDetail 和levelsOfDetailBias,我根本看不到实现原因。如果您拥有无限可扩展的内容,例如分形,那么这是非常有限的。
  • 最重要的是:如果您将其限制为仅在一个方向上缩放(我通过在 setTransform 中将一个方向的比例因子强制为 1 来做到这一点:),它的行为很奇怪