关于iPhone:奇异的背景图片会根据动画UIView的大小进行调整

Odd background image resizing on animating UIView

我在用作游戏区域的视图中间有一个UIView(在2d可可视图中)。
该图像具有与视图相同大小的背景图像。
调整视图的大小我使用动画来使其看起来平滑(并且效果很好)。但是,当动画开始时,背景图像立即改变大小,平铺或被裁剪为动画结束时背景图像实际上是相同的大小。

我不希望这样,我希望图像始终适合视图,而不考虑视图大小。

1
2
3
4
5
6
7
8
    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];

当它跳到一个不同的大小,然后动画到原始大小时,看起来很奇怪。

我猜想也许我将不得不在主视图下创建一个单独的视图,但这是唯一的方法吗?


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