16 votes

Comment envelopper une cellule UICollectionViewCell qui se dimensionne elle-même ?

Mon objectif est d'avoir une implémentation Swift d'une UICollectionView avec un contenu dynamique où chaque cellule contient des parties d'une phrase. Chaque partie de la phrase peut être éditée par l'utilisateur. Le problème est que certaines parties d'une phrase peuvent être plus longues que le conteneur lui-même. L'utilisation de sizeToFit n'est pas une alternative car tout le contenu doit avoir la même taille de police pour maintenir la lisibilité dans toute la vue de la collection.

Actuellement, le comportement que j'obtiens lorsque j'ai une partie de phrase plus longue que le contenant est le suivant : As you can see the third row has leading ellipsis

Comme vous pouvez le constater, la troisième ligne comporte des points de suspension.

Ce que j'aimerais obtenir est le suivant : la partie débordante de la cellule devrait être enveloppée de manière analogue à une balise span en HTML, comme suit : The third row wraps

Est-ce possible ? Comment puis-je y parvenir ?

1voto

Epaga Points 12717

Pour autant que je sache, c'est possible mais complexe - voici quelques indications sur ce dont vous aurez besoin :

  • 2 types de cellules de vue de collection supplémentaires : dans la première, seuls les bords gauches sont arrondis, dans la seconde, seuls les bords droits sont arrondis.
  • Utilisez l'API Core Text pour déterminer où votre texte doit être enveloppé.
  • Dans votre source de données, vous devrez reconnaître la situation avant de créer les cellules et, au lieu de créer une seule cellule, vous en créerez deux, en utilisant les nouveaux types que vous avez.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X