【发布时间】:2013-05-21 13:07:43
【问题描述】:
假设您有一个 UIView 或 CALayer 进行自己的(矢量)绘图,并且您希望它在任何尺寸下都保持清晰,即使在缩放视图或图层时也是如此。当它使用transform 属性缩放时,如何让它重绘?是强制更改bounds 而不是使用transform 的唯一方法吗?或者每一步都拨打setNeedsDisplay?
为什么UIImageView 似乎表现不同(即它似乎总是适当地缩放其源图像,即使它使用transform 缩放并且bounds 没有改变)?是不是因为它是直接设置底层CALayer的content属性的唯一情况?
【问题讨论】:
-
问题到底是什么?当您处理可缩放矢量时,将在显示之前计算显示,而 UIImageView 将仅显示光栅图像。除非内容模式设置为缩放并且内容大于当前显示的大小,否则它肯定看起来不清晰。如果您正在缩放 rastor'd 矢量(渲染),那么您基本上只是在缩放成品。如果您只是缩放包含渲染矢量的视图,那么您正在缩放图像。
-
我知道,这就是问题所在,我希望重复调用
drawRect,而不是仅仅放大初始光栅化。相反,UIImageView不仅放大其初始边界的像素,还使用源图像的全分辨率。我想这意味着核心动画总是在变换中使用位图,当使用drawRect时,位图的大小是边界,但是当内容是图像时,位图的大小就是图像的大小。这让我觉得我可以尝试使用大于 1 的rasterizationScale....
标签: ios uiview scale calayer drawrect