在作iOS項目的開發中,UITableView控件的應用十分普遍。在進行自定義UITableViewCell時,常常有小夥伴遇到這樣的問題:在UITableViewCell上面添加了一個有背景顏色的子視圖,當用戶點擊UITableViewCell或者選中UITableViewCell時,Cell上的子視圖發生了奇怪的變化,其背景色變透明瞭,若是添加在Cell上的子視圖只是一個色塊,那麼咱們看起來,這個子視圖好像莫名其妙的消失了同樣。以下圖所示:spa
產生這種狀況的主要緣由是因爲UITableViewCell的選中風格所致。若是開發者不進行設置,UITableViewCell中的selectionStyle屬性默認風格爲UITableViewCellSelectionStyleBlue。這時,若是用戶點擊或者選中了某個Cell,系統會自動將其上子視圖的背景色改爲透明以便統一Cell的總體背景顏色。開發者能夠將其設置爲UITableViewCellSelectionStyleNone枚舉值來不適用任何Cell的選中風格。code
若是須要使用Cell的選中風格同時又不想讓Cell上的子視圖收到影響,咱們能夠繼承UITableViewCell後在其中覆寫父類的以下兩個方法,在這些方法中從新設置子視圖的背景色:繼承
//這個方法在Cell被選中或者被取消選中時調用 - (void)setSelected:(BOOL)selected animated:(BOOL)animated { [super setSelected:selected animated:animated]; self.testLabel.backgroundColor = [UIColor orangeColor]; } //這個方法在用戶按住Cell時被調用 -(void)setHighlighted:(BOOL)highlighted animated:(BOOL)animated{ [super setHighlighted:highlighted animated:animated]; self.testLabel.backgroundColor = [UIColor orangeColor]; }
以下圖:開發
專一技術,熱愛生活,交流技術,也作朋友。io
——琿少 QQ羣:203317592class