2011-05-07 75 views
0

在我的iPhone應用程序我有通過view.backgroundColor = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"IndexCard.png"]];UIView的背景圖像被壓扁

在我的iOS3.1設備,當視圖獲取調整創造了一個平鋪的背景圖像的UIView,背景圖像被壓扁 - 即它平鋪相同的次數,但每個瓦片的高度降低。相反,我希望每個tile保持相同的大小,但要根據新的視圖大小調整重複次數。如果我清除背景並重置它,問題就會得到解決,但這似乎是解決問題的特別低效方案。在iOS4.3模擬器上,它可以正常工作。

這裏的原始圖像 - 12線:

The original image

這裏是我所看到的,當我調整看法 - 它仍然有12行:

What I'm seeing - the image is squashed

而這裏的我真的很想看 - 背景將被裁剪爲5行:

What I want to see - the image cropped

任何想法?

回答

0

我發現了一個更簡單的解決方案:

view.contentMode = UIViewContentModeRedraw; 
// instead of the default UIViewContentModeScaleToFill 
1

視圖的backgroundColor屬性爲作爲繪製視圖的基礎的CALayer分配顏色(或圖案)。您可以通過尋址視圖的layer屬性來更改CALayer的屬性。

通過CALayer Class Reference我看到有一個名爲contentsGravity屬性,尋找:

確定接收的內容 是如何定位其邊界內。

它表示:

contentsGravity可能的值示於「Contents Gravity Values」。默認值是kCAGravityResize

這就解釋了爲什麼你的圖像被擠壓像這樣:默認情況下它調整圖像大小。在另一內容重力縱觀值有幾個有可能最適合您的選擇:

kCAGravityTop:內容是在邊界矩形的頂邊水平居中。

kCAGravityCenter:內容在邊界矩形中水平和垂直居中。

'kCAGravityBottom':內容水平居中在邊界矩形的底邊。

我猜kCAGravityTop是你正在尋找可能的內容,所以你設置你的視圖的層的contentsGravity這樣的:

view.layer.contentsGravity = kCAGravityTop;