2012-04-25 97 views
1

我有一個tableview,我希望自定義accessoryview按鈕。 爲此我有半透明像素的自定義PNG圖像。如何將特定混合模式添加到自定義AccessoryView

UIButton *myAccessoryButton = [[UIButton alloc] initWithFrame:CGRectMake(0, 0, 24, 24)]; 
[myAccessoryButton setUserInteractionEnabled:YES]; 

[myAccessoryButton setBackgroundColor:[UIColor clearColor]]; 

[myAccessoryButton setImage:[UIImage imageNamed:@"accessory_btn"] forState:UIControlStateNormal]; 
[myAccessoryButton addTarget: self 
         action: @selector(accessoryButtonTapped:withEvent:) 
      forControlEvents: UIControlEventTouchUpInside]; 

[cell setAccessoryView:myAccessoryButton]; 

而且這對我按鈕繪製很好,除了一個麻煩。在我的模板(PSD)中,此按鈕具有混合模式 - 重疊,並且當我從PSD格式導出該按鈕時,它具有白色半透明像素,必須在相同的重疊混合模式下與表格背景混合​​。但默認情況下,導出的PNG以默認模式混合,當我加載它作爲UIImage自定義我的accessoryview。

如何更改UIImage或UIButton或AccessoryView的混合模式可能是?

it's photoshop view it's simulator view enter image description here

+0

是否可以發佈圖片 - 這兩個Photoshop都顯示你想要它看起來,並從應用程序顯示它目前的樣子?也就是說,你可能無法通過改變視圖設置來做你想做的事情。如果您使用'CGBlendMode'手動繪製,您可以訪問許多有用的合成效果。所以,你可以創建一個'UIView'子類,然後在它的'drawRect'方法中繪製一部分表背景,然後用你需要的混合模式繪製圖像。跳過背景繪製步驟會很好,但是你可能不能。 – Dondragmer 2012-04-26 00:17:26

+0

@dondragmer感謝您的回覆。我在主題中附上樣本。看起來你是對的,唯一的辦法就是做我想做的事是做你的建議:( – 2012-04-26 03:59:38

回答

1

在左邊你在Photoshop中得到的圖片?你想讓它在不改變色調的情況下照亮背景?如果是這樣,就沒有簡單的方法來實現這一點。

有兩個部分的解決方案:

  1. 有一個單一drawRect塊(或它的等效CALayer),其平的背景和繪製使用適當CGBlendMode輝光。
  2. 編輯圖片,使底部的輝光成爲當前背景的棕色陰影。

無論哪種方式,你失去了靈活性;這將是很好的拖動你的按鈕或改變背景圖形,並將所有東西都很好地合併在一起。

這可能會改變。 CALayer已經有一個名爲compositingFilter的屬性。但是,從iOS 5.1開始,其行爲未定義。如果有人在未來的iOS 確實有合成過濾器的工作,請添加註釋這樣說。

+0

Thanx。是的 - 左邊是photoshop圖片。右邊是模擬器。第二個變種是最簡單的,但它看起來不像它必須如果我這樣做改變半透明的白色到半透明的棕色)然而它最容易做到的幾乎是我想要的方式 – 2012-04-26 04:40:46

+0

爲了得到我想要的我做的下一個改變重疊混合模式爲默認。在那個區域是紅棕色的,並添加一些聲音,現在它在模擬器中看起來非常接近原始(第3張圖片) – 2012-04-26 05:07:32

相關問題