2017-10-14 44 views
5

Tek bir görünüm projesi oluşturdum ve bir koleksiyonView ekledim. Ben öziOS11 UICollectionSectionHeader kırpma kaydırma göstergesi

extension ViewController: UICollectionViewDataSource { 
    func numberOfSections(in collectionView: UICollectionView) -> Int { 
    return 1 
    } 

    func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { 
    return 100 
    } 

    func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView { 
    let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind, withReuseIdentifier: kHeader, for: indexPath) 
    return headerView 
    } 

    func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: "cell", for: indexPath) 
    cell.backgroundColor = UIColor.blue 
    return cell 
    } 
} 

extension ViewController: UICollectionViewDelegateFlowLayout { 
    func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, referenceSizeForHeaderInSection section: Int) -> CGSize { 
    return CGSize(width: collectionView.bounds.width, height: 88) 
    } 
} 

için UICollectionReusableView

final class TestReusableView: UICollectionReusableView { 
    override init(frame: CGRect) { 
    super.init(frame: frame) 
    backgroundColor = UIColor.red 
    } 
    ... 
} 

Seti veri kaynağı ve temsilci basit alt sınıfı kayıtlı sonuç bölüm başlığı dikey kaydırma göstergesi yukarıda konumlandırılmış gibi görünüyor olduğunu. Ancak, uygulamayı 10.3.1 simülatörüne karşı çalıştırırsam, davranış beklediğim gibi çalışır.

Red section header is on top of the scroll indicator

+0

Ben de bölüm başlığı tüm görünümlerde yukarıda konumlandırılmış iOS 11.0 ile benzer bir sorun karşılaştım. Her şey 10.3'te iyi çalışıyor. – Aks

+2

Kesinlikle iOS 11.0+ sürümü gibi görünüyor. Ben de içine koşuyorum. Bunu bulabildiğim en yakın RADAR: http://www.openradar.me/34308893 – isoiphone

cevap

1

ben de denemek olamazdı ancak viewDidLoad() bu eklemeyi deneyebilirsiniz:

let flow = collectionView.collectionViewLayout as! UICollectionViewFlowLayout 
flow.sectionHeadersPinToVisibleBounds = true 
+0

Bu sadece, koleksiyonun üst kısmındaki bölüm başlığını işaretler. Söz konusu sorun, bölüm başlıklarının dikey kaydırma göstergesini kırpıyor olmasıdır. – CoderNinja

0

Eh bile benim app aynı sorunu yaşamıştır ve bunun içinde serbest bırakılması için aday oldu 2 hafta. Bunun neden sadece iOS 11'de başarısız olduğunu araştırmak için zamanım olmadı. Bu nedenle yaptığım hızlı çalışma, footerView'ın bu sorunu içermediğinden, headerView'ın headerView ile değiştirilmesi yerine yaptığım hızlı çalışmadır.

4

bu benim için çalışıyor:

- (void)collectionView:(UICollectionView *)collectionView willDisplaySupplementaryView:(UICollectionReusableView *)view forElementKind:(NSString *)elementKind atIndexPath:(NSIndexPath *)indexPath { 
    if (SystemVersionGraterOrEqual(11)) { 
     if ([elementKind isEqualToString:UICollectionElementKindSectionHeader]) { 
      view.layer.zPosition = 0; 
    } 
} 

}

+0

İyi yakalama, tüm sorun bir hata gibi görünse de, z konumuyla oynamak gerekli olmamalıdır. –