web-dev-qa-db-fra.com

Comment empêcher UITableView de découper le contenu UITableViewCell dans iOS 7

En mettant à jour une de mes applications d'iOS6 vers iOS7, j'ai remarqué que là où le contenu des cellules iOS6 était autorisé à traverser en dehors d'une cellule lorsque la propriété clipsToBounds est définie sur NO dans la vue des cellules ou contentView, iOS7 semble désactiver cela même lorsque le la vue générale, la vue de table, les clips de cellule et de contenu de cellule sont tous définis comme NO. Vous pouvez en voir un exemple dans les images incluses. Le premier est un code de test fonctionnant sur iOS6, et le second est le même code fonctionnant sur iOS7:

A sample of this running on iOS6Identical code running on iOS7 Quelqu'un sait-il comment résoudre ce problème? Je suppose que ce n'est qu'une solution sur une seule ligne, mais j'ai passé plusieurs heures à ce sujet sans succès. Pour éviter une réécriture majeure et des maux de tête, je préfère, mais jouer avec la vue, la vue de la table, les clips cellulaires et les contenus cellulaires ToBounds n'a pas abouti - tous sont définis sur NO toujours sur iOS7, donc je ne suis pas sûr de ce qui se passe différemment.

Vous pouvez voir et télécharger l'exemple de projet sur: https://github.com/Jon-Schneider/ClipsToBoundsTest

Merci!

25
jonschneider

Il semble que la hiérarchie des vues ait légèrement changé dans iOS 7 pour les cellules de vue tabulaire.

Vous pouvez essayer de définir les clips sur des limites dans la vue d'ensemble de contentView:

[cell.contentView.superview setClipsToBounds:NO];

Si vous ajoutez ce qui suit à votre exemple de code et que vous exécutez sur ios7 vs ios6, vous verrez qu'il existe une vue supplémentaire entre la vue de cellule et la vue de contenu:

[cell.contentView.superview setClipsToBounds:NO];
NSLog(@"%@", cell.contentView.superview);
NSLog(@"%@", cell.contentView.superview.superview);
NSLog(@"%@", cell);

if (self.view.clipsToBounds) {
    NSLog(@"Master clips");
} else {
    NSLog(@"Master no clip");
}
75
rjowens

Vous pouvez effectuer des modifications dans l'inspecteur des attributs de vue de table des sous-vues de clip.

enter image description here

9
Cao Yong