我正在制作包含使用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)当我设置为零宽度时,为什么内容不会栅格化?
答案 0 :(得分:1)
由于零宽度视图没有区域,因此它不想绘制自己就不足为奇了。
当您更改视图的大小时,视图使用其contentMode
属性来决定如何重绘其内容。 contentMode
的默认值为UIViewContentModeScaleToFit
,这意味着它只是缩放其先前的内容以适应新的大小。尝试将视图的contentMode
属性设置为UIViewContentModeRedraw
。这告诉它在调整大小时发送自己setNeedsDisplay
。