UIView动画时栅格化子视图

时间:2012-02-13 18:56:17

标签: objective-c uiview

我正在制作包含使用CGPath元素绘制的图形的UIView

myView.frame=CGRectMake(0,0,1024,768);
[UIView beginAnimations:nil context:NULL];
[UIView setAnimationDuration:1];
myView.frame=CGRectMake(0,0,0,768);
[UIView commitAnimations];

这是我第一次运行这段代码时工作正常,但是当我稍后使用setNeedsDisplay使用它时,我无法强制myView更新。当我执行代码时,动画按预期发生,但它始终显示我发送的第一个图形。我已经确认在更新之前正在向视图发送正确的信息。 在我对此进行故障排除时,我将myView的目标宽度设置为80。 这导致一切正常工作除了我的CGPath绘图似乎是光栅化(有些图形视图变得模糊,其他视图看起来像素化)。当宽度设置为0时,没有光栅化。这引出了3个问题:

1)如果宽度为零,我是否无法强制重绘视图(当宽度为0时,它是否会“消失”)?

2)如何在不栅格化内容的情况下为此视图设置动画?这只是在我改变视图的尺寸而不是位置或不透明度时才会发生。

3)当我设置为零宽度时,为什么内容不会栅格化?

1 个答案:

答案 0 :(得分:1)

由于零宽度视图没有区域,因此它不想绘制自己就不足为奇了。

当您更改视图的大小时,视图使用其contentMode属性来决定如何重绘其内容。 contentMode的默认值为UIViewContentModeScaleToFit,这意味着它只是缩放其先前的内容以适应新的大小。尝试将视图的contentMode属性设置为UIViewContentModeRedraw。这告诉它在调整大小时发送自己setNeedsDisplay