2011-05-31 65 views
1

我有一個自定義的UITableViewCell。所有繪圖都在drawRect:方法中完成,並且不添加子視圖。 繪圖工作正常,滾動速度很好。 但問題在於選定的單元格。我想選擇的行爲就像它通常會:用drawRect +普通藍色選擇自定義UITableViewCell

  • 藍色漸變的顏色選擇
  • 反向文本顏色
  • 動畫取消選擇

我一直沒能實現全部三種。

第一次嘗試:
設置selectionStyle = UITableViewCellSelectionStyleNone並做drawRect方法選擇的顏色。 用這種方法,我能夠實現前兩件事,但取消選擇是即時的。所以一秒選擇藍色,下一秒取消選擇。我沒有得到好的淡出。

第二次嘗試:
selectionStyle = UITableViewCellSelectionStyleBlue 利用該方法我的細胞是所有梯度藍色選中時。我擁有的文本不可見。雖然淡出效果很好。

第三次嘗試:
設置selectionStyle = UITableViewCellSelectionStyleBlue並設置selectedBackgroundView到我設置的backgroundColor一個透明的藍色一個UIView。 這裏的問題是,selectedBackgroundView(儘管名稱)繪製在我的正常內容之上。所以如果selectedBackgroundView不透明,我看不到文字。如果它是透明的,我可以看到文字,但是選擇顏色變得「褪色」並且看起來不正確。

什麼是實現所有三個要點的正確方法?

回答

0

我建議使用第二次嘗試與手勢識別器結合使用。檢查用戶是否按下單元格,如果是,請將該單元格中的文本顏色設置爲黃色(或藍色?xD的反轉是什麼)。

示例代碼:

- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { 
    if (touch.view isKindOfClass:[UIButton class]]) { 
     //do something with that view, for example: 
     //change the color of the text in that view, 
     //or invert it ;) 
     return YES; 
    } 
    return NO; 
} 

或者,您可以附加UIGestureRecognizer到該按鈕。這樣,你就可以得到插入到選擇器中的類。

可能有更好的選擇來做你所問。這只是我想到的,如果你已經有2/3點的工作,這應該會幫助你獲得3/3。

+0

的問題不在於文字的顏色應該被反轉。它通常是黑色的,但這也是不可見的。問題似乎是藍色漸變不透明。我的單元格中也有一張圖片,在選擇時也不可見。所以這個建議是行不通的。 – Kobski 2011-05-31 07:41:39