1

我和这个人有同样的问题,并且提供的解决方案没有解决它(也不清楚它在另一个 SO 问题中解决了它)。

当您更改.frameUIView 的大小,并且您没有更改默认值.contentMode时,那么(Quartz 路径)中的自定义绘图肯定drawRect应该与 UIView 的大小一起缩放吗?我的没有。现在我可以打电话setNeedsDisplay,它会重绘,但我正在寻找可以动画的缩放。这可能吗?

相反,对我来说发生的事情是 Quartz 图纸被简单地裁剪但保持其大小。我已经尝试过直接设置contentMode以及clipsToBounds其他实验,但无论我尝试什么,我都不会发生 Quartz 的自动缩放。

4

2 回答 2

1

一定是发生了其他事情。这是我拼凑的一个简单演示,以仔细检查 contentMode 是否按预期工作 - 果然,当 contentMode 设置为默认的“缩放填充”时,支持位图会放大/缩小。并在视图上调用 setNeedsDisplay 重新渲染图像。

您还对视图做了哪些其他事情?(你没有改变它的 contentStretch 属性,是吗?)你对视图层做了什么吗?你检查过视图上的 contentMode 真的是 UIViewContentModeScaleToFill 吗?另外,你是动画视图本身的框架,还是超级视图?

于 2012-04-11T05:12:38.750 回答
0

你可以尝试覆盖drawLayer

- (void)drawLayer:(CALayer*)layer inContext:(CGContextRef)ctx
{
    [super drawLayer:layer inContext:ctx];

    /*here to change self.frame
        self.frame = CGRectMack(a, b, c, d);
    */
}
于 2012-05-03T03:34:01.487 回答