2016-01-26 1 views
1

J'utilise cette réponse pour créer un fond dégradé pour une vue de table cellulaireUITableViewCell couche de dégradé Couvrant Bouton Supprimer

How to make gradient background in UITableViewCell in iOS?

-(void)addGradientBackgroundWithColor:(UIColor *)color { 
    if (!self.gradientLayer) { 
     self.gradientLayer = [CAGradientLayer layer]; 
     self.gradientLayer.frame = self.bounds; 
     self.gradientLayer.startPoint = CGPointMake(0.0f, 0.5f); 
     self.gradientLayer.endPoint = CGPointMake(1.0f, 0.5f); 
    } 
    self.gradientLayer.colors = @[(id)[[color hmf_makeLightHighlight] CGColor], (id)[[UIColor whiteColor] CGColor]]; 
    [self.layer insertSublayer:self.gradientLayer atIndex:0]; 

} 

Le problème est que quand je fais un swipe pour supprimer le geste, la couche de dégradé semble couvrir le bouton de suppression.

Y at-il un moyen de résoudre ce problème?

enter image description hereenter image description here

+0

Une solution se cacherait gradientLayer lorsque les boutons d'action sont présentés. Il devrait aussi y avoir un moyen de changer l'ordre z des objets. insertSublayer index est 0, peut-être si vous avez cet index comme 1 et avez tous les autres éléments dans la cellule dans une vue avec z position 2 etc, alors cela pourrait fonctionner. –

+0

Vous pouvez déplacer le Dégradé comme une vue de superposition et attraper le geste de balayage, C'est une solution de contournement très complexe –

Répondre

1

L'ajout de ce fixe mon problème

- (void)layoutSubviews { 
    // resize your layers based on the view's new bounds 
    self.gradientLayer.frame = self.bounds; 
} 
0

Je suppose que vous insérez dans la couche gradient UITableViewCell. Je pense que l'insertion dans contentView de UITableViewCell peut résoudre votre problème.

+0

Je viens d'essayer [self.contentView.layer insertSublayer: self.gradientLayer atIndex: 0]; Cela n'a pas fait de différence :( – Hackmodford