uiview - 与CATiledLayer一起使用时UIView的 "contentScaleFactor"背后的 secret 是什么?

标签 uiview ios4 uiscrollview catiledlayer

问候,

我正在开发一个受 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/

    相关文章:

    ios - UIView 的 subview 或组件不随 View 移动

    memory - 未收到 addSubview 通知

    iphone - 是否可以在 AVAssetExportSession 中使用 AVAssetExportPresetMediumQuality 和 AVAssetExportPresetHighestQuality 之间的质量?

    ios - UILabel 连接到 socket ,但为零

    ios - iOS:主线程检查器:在后台线程上调用的UI API:-[UIView keepCount]

    iphone - 释放 UIView 是否会释放其所有 subview ?

    iphone - NSString 基础知识说明

    iphone - UIScrollView 错误? float foo = scrollview.zoomScale 使应用程序崩溃

    ios - UIScrollView View 的内容被裁剪

    ios - 确定 UIView 何时完成布局