Dans mon application Swift
j'utilise UICollectionView
. Chaque UICollectionViewCell
contient un UILabel
et à un moment donné, je remplis ces étiquettes avec différentes chaînes de mon tableau. Cependant, les chaînes ont une longueur différente, donc je voudrais les afficher avec une taille correcte. Actuellement, je suis en utilisant ces deux méthodes:
pourquoi je ne peux pas changer la largeur de mon UICollectionViewCell basé sur la longueur d'une étiquette qui est dedans?
private func estimateFrameForText(text: String) -> CGRect {
//we make the width arbitrarily large so we don't undershoot height in calculation
let width: CGFloat = 200
let size = CGSize(width: width, height: 33)
let options = NSStringDrawingOptions.usesFontLeading.union(.usesLineFragmentOrigin)
let attributes = [NSFontAttributeName: font]
return NSString(string: text).boundingRect(with: size, options: options, attributes: attributes, context: nil)
}
func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
var width: CGFloat = 200
//we are just measuring width so we add a padding constant to give the label some room to breathe!
var padding: CGFloat = 1
//estimate each cell's width
if let text = self.suggestedHashtags[indexPath.item] as? String {
width = estimateFrameForText(text: text).width + padding
}
return CGSize(width: width, height: 35)
}
mais il ne fonctionne pas, les cellules sont toujours les mêmes en taille. Qu'est-ce qui me manque?
-vous montrer votre sortie que vous obtenez et ce que vous voulez réellement. Nous avons donc eu une idée –