在动画UIView上调整大小的背景图像

时间:2010-06-10 23:56:09

标签: iphone uiview core-animation

我在视图中间有一个UIView,我用作游戏区域(在2d可可视图中)。 此图像具有与视图相同大小的背景图像。 调整视图大小我使用动画使其看起来很流畅(并且工作正常)。但是,当动画开始时,背景图像会立即改变大小,平铺或剪裁到动画完成时的大小,背景图像的大小与物理尺寸相同。

我不希望这样,我希望图像始终适合视图,无论视图大小如何。

    UIImage *bgImage = [UIImage imageNamed:@"head.png"];
... // resize the image returning another image
self.view.backgroundColor = [[UIColor alloc] initWithPatternImage:resizedImage];
[UIView beginAnimations:@"resizeView" context:nil];
[UIView setAnimationDuration:.5];
int localViewSize = ... // work out view sizes
self.view.frame = CGRectMake(... ,localViewSize,localViewSize); 
[UIView commitAnimations];

它看起来很奇怪,因为它跳到不同的大小,然后动画到原始大小。

我猜也许我不得不在主视图下面制作一个单独的视图,但这是唯一的方法吗?

1 个答案:

答案 0 :(得分:1)

我怀疑“图案图像”被渲染到图层内容(实际上是纹理),并且图层内容被拉伸以适合。解决这个问题的简单方法是设置self.contentMode = UIViewContentModeCenter左右;请记住,当视图增长时,它会起作用,但当视图缩小时,可能会显示空白边框。