问候,
我正在开发一个受 iOS SDK 附带的“ZoomingPDFViewer”示例启发的应用程序。在某个时候,我发现了以下代码:
// to handle the interaction between CATiledLayer and high resolution
// screens, we need to manually set the tiling view's
// contentScaleFactor to 1.0. (If we omitted this, it would be 2.0
// on high resolution screens, which would cause the CATiledLayer
// to ask us for tiles of the wrong scales.)
pageContentView.contentScaleFactor = 1.0;
我试图了解更多关于
contentScaleFactor
的信息以及它的作用。在阅读了所有提到它的 Apple 文档后,我搜索了谷歌,但从未找到它实际作用的明确答案。以下是一些我很好奇的事情:
contentScaleFactor
在绘制 UIView/CALayer 的内容时,会对图形上下文产生某种影响。这似乎与高分辨率显示器(如 Retina 显示器)有关。有什么效果contentScaleFactor
真的有什么? UIScrollView
时并将其设置为缩放,比如说,我的 contentView; contentView 的所有 subview 也在缩放。这是如何运作的?哪些属性可以UIScrollView
修改以使视频播放器变得模糊并放大? TL;DR:UIScrollView 的缩放功能是如何“在后台”工作的?我想了解它是如何工作的,以便编写正确的代码。
任何提示和解释都非常感谢! :)
最佳答案
坐标以点而不是像素表示。 contentScaleFactor
定义点和像素之间的关系:如果是1,点和像素是一样的,但是如果是2(就像retina 显示的那样),则意味着每个点都有两个像素。
在普通绘图中,使用点意味着您不必担心分辨率:在 iphone 3(scaleFactor 1)和 iphone4(scaleFactor 2 和 2x 分辨率)中,您可以使用相同的坐标和绘图代码。但是,如果您正在绘制图像(直接,作为纹理......)并且仅使用法线坐标(点),则您不能相信像素到点的映射是 1 比 1。如果这样做,那么每个像素如果 scaleFactor 为 2(x 方向为 2,y 方向为 2),图像将对应 1 个点但 4 个像素,因此图像可能会变得有点模糊
与 CATiledLayer
合作您可以使用比例因子 2 获得一些意想不到的结果。我猜想拥有 UIView
一个 contentScaleFactor==2
和层 a contentScale==2
混淆系统,有时会成倍增加规模。 Scrollview 可能会发生类似的情况。
希望这能澄清一点
关于uiview - 与CATiledLayer一起使用时UIView的 "contentScaleFactor"背后的 secret 是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5272633/