2017-02-16 89 views
1

我有這個自定義的UICollectionViewCell,它在iPhone 7上很好用,但是當我在Iphone 5模擬器上運行它時,事情變得很奇怪。 我的收藏視圖有許多部分,每個部分有一個項目。它看起來像一個表格視圖,意味着每個單元格都是全寬度,並且它們都像表格視圖中一樣高於彼此。 由於某些原因,在Iphone 5中,框架是:(-27.5,50.0,320.0,45.7143) 這意味着它的寬度和高度是正確的,但它會在屏幕左側開始27.5分。我更新像這樣的單元格:CollectionViewCell不在iPhone 5上的屏幕

override func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> ProfileCollectionCell { 
    let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! ProfileCollectionCell 
    let width = CGFloat((self.collectionView?.frame.width)!) 
    let height = width/7 
    cell.frame.size = CGSize(width: width, height: height) 
    return cell 
} 

我怎樣才能正確定位框架?

回答

3

你不應該設置在cellForItemAtIndexPath

細胞的框架相反,實施UICollectionViewDelegateFlowLayout方法...

func collectionView(UICollectionView, layout: UICollectionViewLayout, sizeForItemAt: IndexPath) { 
    let width = collectionView?.frame.width ?? 0 
    let height = width/7 
    return CGSize(width: width, height: height) 
} 
+0

這工作得很好。謝謝!! – Sharonica

1

第一個附加協議到您的UICollectionViewDelegateFlowLayout類,並添加以下代碼:

func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize 
{ 
    let width = CGFloat((self.collectionView?.frame.width)!) 
    let height = width/7 
    return CGSize(width: width, height: height) 
} 
+0

謝謝!這工作 – Sharonica