2016-07-24 11 views
0

Ich versuche, einen benutzerdefinierten Kalender zu erstellen, ich muss den Abstand der Kopfbeschriftungen ändern, wenn die Ausrichtung geändert wird.Swift - UICollectionView: Wie man den Etikettenabstand im Header automatisch anlegt

Ich verwende den folgenden Code, um die Größe und den Abstand zwischen den Zellen zu ändern, aber wie kann ich das gleiche für die Beschriftungen in der Kopfzeile tun. Der Header ist eine benutzerdefinierte Klasse.

override func viewWillTransitionToSize(size: CGSize, withTransitionCoordinator coordinator: UIViewControllerTransitionCoordinator) { 

    super.viewWillTransitionToSize(size, withTransitionCoordinator: coordinator) 
    updateCollectionViewLayout(with: size) 

} 

private func updateCollectionViewLayout(with size: CGSize) { 

    let itemSizeForPortraitMode : CGSize = CGSize(width: 40, height: 40) 
    let itemSizeForLandscapeMode: CGSize = CGSize(width: 40, height: 40) 
    var minimumItemSpacing: CGFloat 

    if let layout = calendarCollectionView.collectionViewLayout as? UICollectionViewFlowLayout { 
     layout.itemSize = (size.width < size.height) ? itemSizeForPortraitMode : itemSizeForLandscapeMode 

     minimumItemSpacing = (size.width - (7 * 40))/6 
     layout.minimumInteritemSpacing = minimumItemSpacing 

     layout.invalidateLayout() 
     calendarCollectionView.updateConstraints() 

    } 
} 

Danke für Hilfe.

Antwort

0

ich die Lösung gefunden, habe ich eine Funktion meiner Header benutzerdefinierte Klasse:

override func layoutSubviews() { 

    super.layoutSubviews() 

    var labelFrame = CGRect(x: 0.0, y: 43, width: self.bounds.size.width/7.0, height: 20) 

    for lbl in self.subviews { 

     if lbl.tag == 1 || lbl.tag == 2 || lbl.tag == 3 || lbl.tag == 4 || lbl.tag == 5 || lbl.tag == 6 || lbl.tag == 7 { 
      lbl.frame = labelFrame 
      labelFrame.origin.x += labelFrame.size.width 
     } 

    } 

}