29279


CellのレイアウトをlineSpace=0,width=50
にしているのに2pxづつ各セルのx座標がずれてしまうのですが、理由が全く検討つきません。もし心あたりあれば教えていただけると助かります。

## Collectionview生成側

[code]

        let backgroundView = UICollectionView(frame: view.frame, collectionViewLayout: UICollectionViewFlowLayout())
        backgroundView.register(UICollectionViewCell.self, forCellWithReuseIdentifier: UICollectionViewCell.identifer)
        backgroundView.dataSource = backgroundLayout
        backgroundView.delegate = backgroundLayout
        backgroundView.isUserInteractionEnabled = false
        backgroundView.backgroundColor = UIColor.groupTableViewBackground
    
[/code]

## レイアウト側

[code]

    class BackgroundLayout: NSObject ,UICollectionViewDelegateFlowLayout, UICollectionViewDataSource{
    
        func numberOfSections(in collectionView: UICollectionView) -> Int {
            return 1
        }
    
        func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int {
            return 7
        }
    
        func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell {
            let cell = collectionView.dequeueReusableCell(withReuseIdentifier: UICollectionViewCell.identifer, for: indexPath)
            print("backgroundCellFrame:",cell.frame)
            return cell
        }
    
        // MARK: - UICollectionViewDelegateFlowLayout
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, insetForSectionAt section: Int) -> UIEdgeInsets {
            return UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
        }
    
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, sizeForItemAt indexPath: IndexPath) -> CGSize {
            return CGSize(width: 50, height: collectionView.frame.height)
        }
    
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumLineSpacingForSectionAt section: Int) -> CGFloat {
            return 0
        }
    
        func collectionView(_ collectionView: UICollectionView, layout collectionViewLayout: UICollectionViewLayout, minimumInteritemSpacingForSectionAt section: Int) -> CGFloat {
            return 0
        }
    }
    
[/code]

## 結果

[code]

    backgroundCellFrame: (0.0, 0.0, 50.0, 568.0)
    backgroundCellFrame: (52.0, 0.0, 50.0, 568.0)
    backgroundCellFrame: (104.0, 0.0, 50.0, 568.0)
    backgroundCellFrame: (156.0, 0.0, 50.0, 568.0)
    backgroundCellFrame: (208.0, 0.0, 50.0, 568.0)
    backgroundCellFrame: (260.0, 0.0, 50.0, 568.0)
    backgroundCellFrame: (312.0, 0.0, 50.0, 568.0)
    
[/code]


CC BY-SA 3.0
2016-09-30T10:40:12.607
29268
2016-10-01T09:05:47.583
2016-09-30T10:48:33.227
8320
8320
question
swift ios uicollectionview uikit
UICollectionViewCellのframeの謎マージンについて


`Cell`を横並びにするレイアウトの場合、`Cell`は、`Collection View`の横幅に対して、左揃えでも、右揃えでもなく、 **両端揃え**
になります（下図参照）。

[![画像の説明をここに入力](https://i.stack.imgur.com/DAn4a.png)](https://i.stack.imgur.com/DAn4a.png)

`Collection View`の横幅を、`Cell`の横幅で割り算して、剰余が出ると、隙間の数、均等に割り振られます。それが「謎マージン」の正体です。


CC BY-SA 3.0
2016-10-01T09:05:47.583
29279
2016-10-01T09:05:47.583
18540
29268
answer