任何人都看過[UIColor initWithPatternImage]忽略了PNG的alpha值的問題?如果是這樣,最好的解決辦法是什麼?爲什麼initWithPatternImage失去了PNG的alpha值
我使用一個PNG作爲我的按鈕對象數組的背景層,它包含幾個預先設置的alpha值,每個像素在要用作紋理背景的圖像中。它可以很好地作爲圖案/紋理顏色加載,但它會將所有的關鍵透明區域作爲不透明的黑色來呈現。
重要的是我可以得到正確的alpha值,以便按鈕圖像正確顯示。按鈕框架不包括來自背景的alpha陰影,因爲這不是按鈕的「可點擊」部分。此外,我的按鈕對象的圖像和背景圖像也使用透明度,所以它確實需要在每個按鈕後面直接有清晰的背景,以讓適當的真實當前顏色設置通過(最底層的UIView將其背景色設置爲當前用戶選擇的顏色)。爲包含此紋理的UIView圖層設置單個alpha值不適用於我的需要。
任何幫助,將不勝感激。我目前的解決方法是使用png使用幾個UIImageView的完全重複的,重複編程的佈局,而不是具有模式填充的單個UIView。
這裏是一小段代碼,但它是非常標準的用於車削一個UIImage成的UIColor用作模式/紋理顏色:
UIView *selectorView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,320)];
UIColor *background = [[UIColor alloc] initWithPatternImage:[UIImage imageNamed:@"SelectorViewBackground.png"]];
selectorView.backgroundColor = background;
[mainView addSubview:selectorView]; // pattern background layer. Add UIButtons on top of this selectorView layer
[self addSubview:mainView]; // current user selected color set in mainView.
[selectorView release];
[background release];
嗨Jay,非常感謝您的回覆。是的,我三重檢查了PNG,後面的任何視圖,它總共爲32位。由於所有內容都位於滾動視圖內,所以最後我選擇創建多個UIImageView,並根據UIButton的行數創建多個UIImageView,它也很容易與UIButtons數組一起滾動。相同的PNG具有與UIImageView一樣的透明效果。有一天,如果我有時間,我會檢查使用圖層時的差異。乾杯! :) – 2011-02-24 04:13:46