0
如何讓UITableViewCell
中的自定義子圖層消失setSelected:animated:
?自定義單元子圖層和UITableViewCell選擇
語境:
我已經加入了CAGradientLayer
的drawRect:
裏面加入了自定義背景層我UITableViewCell
,像這樣:
- (void)drawRect:(CGRect)rect{
[super drawRect:rect];
[[self providerLabel] setTextColor:kOUBlue];
[self addGrayLayer];
}
- (void)addGrayLayer{
[[[self contentView] layer] insertSublayer:[self grayGradientLayer] atIndex:0];
}
- (CAGradientLayer *) grayGradientLayer{
if (!_grayGradientLayer) {
CAGradientLayer *gradient = [CAGradientLayer layer];
UIColor *white = [UIColor colorWithWhite:1 alpha:2];
UIColor *gray = [UIColor colorWithRed:0.96 green:0.96 blue:0.96 alpha:1];
[gradient setColors:@[(id)white.CGColor, (id)gray.CGColor]];
[gradient setFrame:[self bounds]];
_grayGradientLayer = gradient;
}
return _grayGradientLayer;
}
當用戶點擊一個細胞中,藍色突出顯示不出現。所以,我試圖隱藏setSelected:animated:
的CAGradientLayer
像這樣:
- (void)setSelected:(BOOL)selected animated:(BOOL)animated
{
[super setSelected:selected animated:animated];
// Configure the view for the selected state
if (selected) {
[[self grayGradientLayer] setHidden:YES];
}else{
[[self grayGradientLayer] setHidden:NO];
}
[[self contentView] setNeedsDisplay];
}
出現藍色的背景,但直到推動畫開始。有沒有辦法讓我的藍色立即出現?我還嘗試添加第二個彩色的CAGradientLayer
並手動交換它們,但在我看來,在隱藏setSelected:
中的圖層後,單元格不會立即重繪。
我試圖強制單元格重繪,使用setNeedsDisplay
沒有運氣。有任何想法嗎?
我認爲你需要移動'[超級的setSelected:選擇動畫:動畫]'你的邏輯下。直到選定了超級視圖呼叫集後,纔會隱藏灰色圖層。 – mkral