2016-07-20 5 views
4

anwenden Ich benutze insetForSectionAtIndex -Methode, um contentInset für einen Abschnitt in meiner Sammlungsansicht festlegen, und ich möchte diesen Einschub nicht auf eine Überschrift des Abschnitts anwenden. Ich brauche die Header-Breite so breit wie der Bildschirm.Wie man unterschiedliche contentIns nur für Inhalte Zellen, aber nicht für eine Überschrift in UICollectionView

ConentInset

func collectionView(collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAtIndex section: Int) -> UIEdgeInsets { 
    if section == 1 { 
     return UIEdgeInsets(top: 0, left: 15, bottom: 0, right: 15) 
    } 

    return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) 
} 

Kopf

override func collectionView(collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, atIndexPath indexPath: NSIndexPath) -> UICollectionReusableView { 

    let header = collectionView.dequeueReusableSupplementaryViewOfKind(kind, withReuseIdentifier: opsMainDescriptionSegmentedControlCellId, forIndexPath: indexPath) as! MyHeader 

    return header 
} 

Antwort

0

Sie können dies nicht tun. UICollectionViews Header müssen so breit wie die UICollectionView selbst sein. Wenn Sie möchten, dass die Kopfzeile kürzer (Breite) als die UICollectionView ist - mein Vorschlag ist, eine separate UIView innerhalb der Kopfzeile zu verwenden und die Kopfzeile zu deaktivieren. So wird es erscheinen, dass es kürzer ist als die Breite des UICollectionView.

+0

Wäre es möglich, die Kopfbreite nicht kürzer als UICollectionView, aber so breit wie der Bildschirm? – Bigair

+0

Scheint, ich habe deine Frage falsch gelesen. Was Sie gerade tun, sollte funktionieren. Stellen Sie sicher, dass die Breite von UICollectionView auf die Breite der übergeordneten Ansicht eingestellt ist. – Tander

+0

Wenn die Breite eines Headers breiter als CollectionView ist, protokolliert XCode eine Fehlermeldung. Die App stürzt nicht ab, aber die Breite der Kopfzeile wird auf die Breite der Sammlungsansicht geändert. – Bigair

3

Ich musste genau dasselbe in einem meiner Projekte tun.

Die Lösung, die ich angelegt:

in der Storyboard, nimmt meine Sammlung Ansicht den Vollbildmodus mit Auto-Layout-Beschränkungen auf.

In viewDidLoad:

collectionView.contentInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0) 

stelle ich die Collection Delegierten selbst und entsprechen auch den

UICollectionViewDelegateFlowLayout Protokoll.

Sie haben dann Zugriff auf die Methode, die Sie verwendet haben, wo ich noch UIEdgeInsets zurückkehren

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets { 

     return UIEdgeInsets(top: 15, left: 20, bottom: 15, right: 20) 

    } 

und es funktionierte für mich.

Sehen Sie, wie es am Ende aussah.

enter image description here

Hope this wird in der Lage sein, anderen zu helfen.

Verwandte Themen