Swift, Breite von UICollectionViewCell und UILabel (innerhalb der Zelle) programmgesteuert ändern

Ich habe die Breite einer Zelle (UICollectionViewCell) so festgelegt, dass sie der Breite von UICollectionView entspricht, und ich versuche, genau dasselbe mit dem UILabel zu tun, das in dieser Zelle enthalten ist. Ich denke, der folgende Code erklärt genau, was ich versuche zu erreichen. Also habe ich hier in SO einige Fragen und auch ein paar Tutorials gelesen, aber ich bin mir immer noch nicht sicher, wie ich das erreichen kann.

In ein paar Fragen wurde über die Verwendung von @ gesacollectionViewLayout aber ich kämpfe wirklich darum, wie ich es in meinem Code verwenden kann. Irgendwelche Ideen? Vielen Dank

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 
Update 1

So habe ich folgendes hinzugefügt:

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)
}

Was passiert, ist, dass beim Laden der Ansicht die Breite des UILabel noch klein ist. Wenn ich zu einer anderen Ansicht gehe und dann zurückkehre, ist das 100%. Also muss ich im @ etwas machviewDidLoad() richtig? Ich benutze bereitsself.collectionView.reloadData() aber ich denke, das ist nur für Daten.

Update 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
}

Antworten auf die Frage(2)

Ihre Antwort auf die Frage