2010-06-10 148 views
0

我在視圖中間有一個UIView,我用它作爲遊戲區(在2D可可視圖中)。 此圖像具有與視圖相同大小的背景圖像。 調整視圖大小我使用動畫使它看起來平滑(並且工作正常)。但是,當動畫開始時,背景圖像會立即改變大小,平鋪或剪裁到動畫完成時的大小,而背景圖像的大小實際上是相同的。奇怪的背景圖片在動畫UIView上調整大小

我不希望這樣,我希望圖像始終適合視圖,而不管視圖大小如何。

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

我懷疑「圖案圖像」渲染到圖層內容(實際上是紋理),並且圖層內容被拉伸以適合。簡單的方法是設置self.contentMode = UIViewContentModeCenter左右;請記住,這種方式在視圖增長時起作用,但在縮小視圖時可能會顯示空白邊框。

+0

所以內容的大小適合新視圖,然後動畫發生? 我會嘗試中心內容模式,但理想情況下,我希望背景圖像可以在任何縮放下拍攝整個視圖。 謝謝 – Woody 2010-06-11 11:53:43

+0

如果圖像足夠大,只需在具有正確內容模式的UIImageView中使用圖像並設置clipsToBounds = YES即可。 – 2010-06-11 19:17:31

+0

我決定暫時以另一種方式來做,因爲那樣做不起作用! – Woody 2010-07-21 13:22:29