Swift, Modifier la largeur de UICollectionViewCell et UILabel(à l'intérieur de la cellule) par programmation

J'ai fixer la largeur d'une cellule(UICollectionViewCell), être égal à la largeur de la UICollectionView et je suis en train de faire exactement la même chose avec le UILabel qui est inclus à l'intérieur de la cellule. Je pense que le code ci-dessous explique exactement ce que je suis en train de réaliser. Donc, j'ai lu quelques question ici, dans la et aussi un couple de tutoriels mais je ne suis toujours pas sûr de savoir comment je peut l'atteindre.

Dans un couple de questions qu'il a dit à propos de l'utilisation collectionViewLayout mais j'ai vraiment du mal sur la façon de l'utiliser dans mon code. Des idées? Merci!!!!

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    var cell = collectionView.dequeueReusableCellWithReuseIdentifier("myCell", forIndexPath: indexPath) as LocationViewCell
    cell.locationLabel.text = "Hello there!"

    //Set cell & label width to 100%
    let collectionViewWidth = self.collectionView.bounds.size.width
    cell.frame.size.width = collectionViewWidth //Works
    cell.locationLabel.frame.size.width = collectionViewWidth // Does NOT 

Mise à jour de 1

J'ai donc ajouté ce qui suit:

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAtIndexPath indexPath: NSIndexPath) -> CGSize {
    //Set cell width to 100%
    let collectionViewWidth = self.collectionView.bounds.size.width
    return CGSize(width: collectionViewWidth, height: 35)
}

Ce qui se passe est que lorsque la vue est chargé de la UILabel la largeur est encore petit. Si je vais à un autre point de vue et, à leur retour, alors il est de 100%. Donc, je dois faire quelque chose dans le viewDidLoad() droit? Je suis déjà en utilisant self.collectionView.reloadData() mais je suppose que c'est uniquement pour les données.

Mise à jour 2

func collectionView(collectionView: UICollectionView, cellForItemAtIndexPath indexPath: NSIndexPath) -> UICollectionViewCell {
    var cell = collectionView.dequeueReusableCellWithReuseIdentifier("locationCell", forIndexPath: indexPath) as LocationViewCell
    cell.locationLabel.text = "Hello UILabel"

    //Set cell width to 100%
    let collectionViewWidth = self.collectionView.bounds.size.width
    cell.frame.size.width = collectionViewWidth
    cell.locationLabel.frame.size.width = collectionViewWidth

    return cell
}
La mise à Jour de 1 m'a aidé à voir que je devrais être en le comparant à l'affichage de la collection la taille, pas le point de vue du contrôleur de taille.. merci!

OriginalL'auteur manosim | 2014-12-28