2017-02-16 8 views
1

私はこのカスタムUICollectionViewCellを持っていて、それはiphone 7でうまく動作しますが、Iphone 5シミュレータで実行すると、物事は変です。 コレクションビューには、セクションが多数あり、セクションごとにアイテムが1つあります。これは、テーブルビューのように見えます。つまり、各セルは全幅で、テーブルビューのようにすべて上にあります。 Iphone 5の何らかの理由で、フレームが(-27.5,50.0,320.0,45.7143) であることを意味していますが、これは正しい幅と高さであることを意味しますが、画面の左側には27.5ポイントから始まります。iphone 5のCollectionViewCellアウト

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

あなたは

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にプロトコルを追加し、コードの下に追加... UICollectionViewDelegateFlowLayoutメソッドを実装し、その代わりcellForItemAtIndexPath

でセルの枠を設定しないでください。

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